Visualizzazione risultati 1 fino 2 di 2

Discussione: Ordinamento in ordine alfabetico

  1. #1
    Guest

    Predefinito Ordinamento in ordine alfabetico

    Sono riuscito ad ordinarli in ordine numerico come posso ordinarli in ordine alfabetico?
    Grazie
    Codice PHP:
    <?php
    //.........
    $somecontent = $nome."|" .$cognome. "|" .$iscrizione. "|" .$punti;//scrivi il record con separatore |
    //...........
    $risultato=file("auto.txt");//ottieni un array di record => nome|punti|lanci
    $stampa=array();//inizializzi un array
    foreach($risultato as $valore){
    $separi=explode("|", $valore);//suddividi il record secondo il carattere |
    /*
    in $separi[0] => nome
    in $separi[1] => punti
    in $separi[2] => lanci
    e ricrei un array da ordinare, usando i punti come chiave
    */

    $chiave=(int)$separi[3];//forse se i punti sono un numero ti conviene forzare ad intero: $chiave=(int)$separi[1];
    $stampa[$chiave]="Nome:&nbsp;".$separi[0]."<br/>Cognome::&nbsp;".$separi[1]."&nbsp;&nbsp;<br/>Iscrizione:&nbsp;".$separi[2]."<br/> Punti:&nbsp;".$separi[3]."<br/><br/>";
    }
    krsort($stampa);//ordini l'array secondo la chiave punti, o krsort se ordine inverso
    //e stampi il risultato
    foreach($stampa as $testo){
    echo
    $testo;
    }
    //.....
    ?>

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ordinare cosa in ordine alfabetico rispetto a cosa?

    Andando un po' ad occhio in base al codice che hai scritto, credo ti convenga ristrutturarlo in modo da avere una struttura dati intermedia nella forma:
    Codice PHP:
    $item = [
    'nome' => ...,
    'cognome' => ...,
    'iscrizione' => ...,
    'punti' => ...
    ];
    utilizzando la quale diventa molto più semplice effettuare gli ordinamenti e le stampe di cui hai bisogno. La puoi costruire così:
    Codice PHP:
    $risultato = file("auto.txt");
    $data = [];
    foreach (
    $risultato as $record) {
    $componenti = explode("|", $record);
    $data[] = [
    'nome' => $componenti[0],
    'cognome' => $componenti[1],
    'iscrizione' => $componenti[2],
    'punti' => $componenti[3]
    ];
    }
    Ora, per ordinarla in ordine alfabetico rispetto a <nome cognome>, per esempio, puoi usare
    Codice PHP:
    usort($data), function ($a, $b) {
    return
    strcmp($a['nome'] . $a['cognome'], $b['nome'] . $b['cognome']);
    }
    E la stampa diventa:
    Codice PHP:
    foreach ($data as $record) {
    echo
    "Nome: " . $record['nome'] . "<br/>"
    . "Cognome: " . $record['cognome'] . "<br/>"
    . "Iscrizione: " . $record['iscrizione'] . "<br/>"
    . "Punti: " . $record['punti'] . "<br/><br/>";
    }

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •