Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Sort array multiplo

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085

    Sort array multiplo

    Ciao,
    avrei la necessità di sortare un array multiplo sulla base del primo elemento (sulla data di nascita) :

    Codice PHP:
    $persone = array(                                                                                                array('data_nascita' => '1973/06/15''nome' => 'Mario''cognome' => 'Rossi''residenza' => 'Roma'),          array('data_nascita' => '1968/04/05''nome' => 'Paolo''cognome' => 'Bianchi''residenza' => 'Torino'),     array('data_nascita' => '1964/11/26''nome' => 'Luca''cognome' => 'Verdi''residenza' => 'Napoli')         );                                                                                                     

    function 
    compare($x$y)        {                             if ( $x[0] == $y[0] )             return 0;                 else if ( $x[0] < $y[0] )         return -1;                else                              return 1;                 } 

    La funzione mi restituisce sempre '1'
    Ultima modifica di JANUS70; 17-02-2015 a 15:43

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Quote Originariamente inviata da JANUS70 Visualizza il messaggio
    Ciao,
    avrei la necessità di sortare un array multiplo sulla base del primo elemento (sulla data di nascita) :
    ...
    Ma l'italiano ti fa così schifo? Guarda che "sortare" è veramente obbrobrioso.
    Il verbo italiano corrispondente a "to sort" esiste: ordinare.

    Detto questo, come chiami la funzione compare? Cosa gli passi?
    Inoltre non vedo il nesso tra ciò che deve restiruire la funzione ed il fatto che l'array sia ordinato in base alla data o meno.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    mi sono perso la chiamata .. :-)

    Codice PHP:
    usort($persone'compare'); 
    Io comunque sono in cerca di una soluzione .. qualunque essa sia .. :-)
    Grazie

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova cosi.

    Codice PHP:
    function my_call_back($a$b) {   
      return (
    strcmp($a['data_nascita'], $b['data_nascita']));
    }

    print 
    "prima<br/>";
    print_r($persone);

    usort($persone'my_call_back');  

    print 
    "dopo<br/>";print_r($persone); 
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    Direi perfetto ! :-)
    Ultima cosetta .. cosa bisogna aggiustare per invertire l'ordinamento ? (discendente)Grazie mille

  6. #6
    Per invertire il "sortaggio" basta un minimo di iniziativa dato che già ti hanno postato il codice completo e funzionante.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    Non ne vengo a capo .. :-(

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Codice PHP:
    function my_call_back($a$b) {   
      return (
    strcmp($a['data_nascita'], $b['data_nascita']) * -1);
    }

    print 
    "prima<br/>";
    print_r($persone);

    usort($persone'my_call_back');  

    print 
    "dopo<br/>";print_r($persone); 
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    Troppo gentile ..
    Grazie mille.

  10. #10
    curiosità mia: ma visto che erano "date", ma non era il caso di riconvertirle in date e compararle invece di usare strcmp? Insomma, non sono un esperto di strcmp, ma non ci metterei la mano sul fuoco che dia i risultati che ti aspetti con tutti i valori possibili di "data_nascita" facendo una comparazione tra stringhe e non tra date. Piu che altro poi a livello di tipi è piu corretto.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.