Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. Ordinare array di array
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • A
      anu User • 13 nov 2013, 11:59 ultima modifica di

      Ordinare array di array

      Salve a tutti!

      Avrei bisogno di un consiglio tecnico...
      vorrei ordinare un array composto da vari campi:

      
      **array** *(size=12)*
            0 =>         **object**(*stdClass*)*4*]          *public* 'idcat' => int 8          *public* 'dscLng' => string '' *(length=0)*          *public* 'ordVis' => int 10      1 =>         **object**(*stdClass*)*5*]          *public* 'idcat' => int 19          *public* 'dscLng' => string '' *(length=0)*          *public* 'ordVis' => int 30      2 =>         **object**(*stdClass*)*6*]          *public* 'idcat' => int 20          *public* 'dscLng' => string '' *(length=0)*          *public* 'ordVis' => int 40           
      ```vorrei appunto ordinare tale array per 'ordVis' prima di utilizzarlo in un foreach!Grazie in anticipo :)
      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
        Caricamento altri post
        Rispondi
        • Topic risposta
        Effettua l'accesso per rispondere
        • Da Vecchi a Nuovi
        • Da Nuovi a Vecchi
        • Più Voti
         

      • L
        lastrobt Moderatore • 13 nov 2013, 17:56 ultima modifica di

        Ciao anu,
        postresti cercare un algoritmo di ordinamento (merge sort o quicksort, ad esempio) ed implementarlo a dovere nel tuo codice. 😉

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • C
          codencode User Attivo • 14 nov 2013, 08:36 ultima modifica di

          Prova in questo modo (N.B. $array è l'array che vuoi ordinare):
          [PHP]
          $chiavi = array ();
          foreach ( $array as $key=>$value ) {
          $chiavi [$key] = $value['ordVis'];
          }
          array_multisort ( $chiavi, SORT_ASC, $array );
          print_r ( $array );[/PHP]

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • E
            enigma Super User • 14 nov 2013, 08:45 ultima modifica di

            Hai bisogno di usort.
            Nel tuo esempio sono già ordinati comunque questo funziona

            [PHP]
            $a = array(
            array(8,'',10),
            array(19,'',30),
            array(20,'',40)
            );

            function cmp($a, $b){
            if($a[2] == $b[2])
            return false;
            return ($a[2] < $b[2]) ? -1 : 1;
            }

            usort($a,"cmp");

            print_r($a);
            [/PHP]

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • A
              anu User • 14 nov 2013, 15:01 ultima modifica di

              Grazie infinite,
              siete stati molto chiari e precisi!

              A buon rendere 😄

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • A
                anu User • 19 nov 2013, 09:00 ultima modifica di

                Grazie a tutti per le risposte,
                quello che cercavo tuttavia era questo:

                
                
                <?php 
                    $test = array(); 
                    $test[0]['name'] = 'zoe'; 
                    $test[0]['email'] = 'lala@example.com'; 
                    $test[0]['phone'] = '123-123-1234'; 
                    $test[0]['trick'] = 'mezopia'; 
                
                
                    $test[1]['name'] = 'Amanda'; 
                    $test[1]['email'] = 'hot@example.com'; 
                    $test[1]['phone'] = '123-123-1235'; 
                    $test[1]['trick'] = 'youarecool'; 
                
                
                    $test[2]['name'] = 'john'; 
                    $test[2]['email'] = 'wowee@example.com'; 
                    $test[2]['phone'] = '123-123-3333'; 
                    $test[2]['trick'] = 'goneinanhour'; 
                
                
                    print_r(columnSort($test, 'name')); 
                
                
                    function columnSort($unsorted, $column) { 
                        $sorted = $unsorted; 
                        for ($i=0; $i < sizeof($sorted)-1; $i++) { 
                          for ($j=0; $j<sizeof($sorted)-1-$i; $j++) 
                            if ($sorted[$j][$column] > $sorted[$j+1][$column]) { 
                              $tmp = $sorted[$j]; 
                              $sorted[$j] = $sorted[$j+1]; 
                              $sorted[$j+1] = $tmp; 
                          } 
                        } 
                        return $sorted; 
                    } 
                    ?>
                
                
                

                trovato su php.net

                Spero possa servire ad altri!

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                Caricamento altri post
                Rispondi
                • Topic risposta
                Effettua l'accesso per rispondere
                • Da Vecchi a Nuovi
                • Da Nuovi a Vecchi
                • Più Voti