Bene ci sono riuscito e posto la spiegazione per chi troverà questo thread e starà sbattendo la testa come me, bisogna darsi una mano no?
Prima di tutto un pò di teoria velocissima:
per ordinare più array o array multidimensionali si usa la funzione array_multisort(), essa però presenta delle lacune, infatti agisce solo su colonne e non su righe di dati, cioè se avete array del tipo seguente, operate su colonne
Codice PHP:
<?php
$nome[] = $nomeSquadra;
$golFatti[] = $golFatti;
$golSubiti[] = $golSubiti;
$vinte[] = $vinte;
$perse[] = $perse;
$giocate = $giocate;
$differenza[] = $differenza;
$punti[] => $punti;
?>
mentre con array multidimensionali come quello che segue, operate su righe
Codice PHP:
<?php
$risultatiSquadre[] = array('nome' => $nomeSquadra, 'golFatti' => $golFatti, 'golSubiti' => $golSubiti, 'vinte' => $vinte, 'perse' => $perse, 'giocate' => $giocate, 'differenza' => $differenza, 'punti' => $punti);
?>
Nel primo caso potete usare la funzione array_multisort() specificando tutti gli array da riordinare secondo la priorità che desiderate, nel mio caso volevo ordinarli secondo i PUNTI e sccessivamente secondo i nomi, poichè volevo ordinare le squadre in ordine alfabetico secondo i punteggi.
Mi spiego con due esempi pratici:
codice:
Classifica ordinata SOLO per PUNTI
milan 6
roma 3
atalanta 3
juventus 0
codice:
Classifica ordinata per PUNTI e per NOME
milan 6
atalanta 3
roma 3
juventus 0
Nel mio caso dunque ho utilizzato la funzione in questo modo (notare che la sequenza riporta PUNTI per primo e NOME per secondo):
Codice PHP:
<?php
array_multisort($punti, SORT_DESC,$nome, $giocate,$vinte,$perse,$perse,$golFatti,$golSubiti, $differenza);
?>
Se invece utilizzate un array multidimensionale dovete per forza modificarlo in più array in modo da poterlo ordinare con array_multisort().
Io venendo a conoscenza di codesto limite di php ho deciso di abolire l'array multidimensionale e creare direttamente tanti array mentre facevo la query al db, ma se per un qualsiasi motivo voi non poteste modificare alla fonte il tipo dei dati nessuna paura, esiste un metodo per creare tanti diversi array dall'array multidimensionale e vi riporto il codice:
Codice PHP:
<?php
// genero l'array all'interno di un ciclo di lettura del db
$risultatiSquadre[] = array('nome' => $nomeSquadra, 'golFatti' => $golFatti, 'golSubiti' => $golSubiti, 'vinte' => $vinte, 'perse' => $perse, 'giocate' => $giocate, 'differenza' => $differenza, 'punti' => $punti);
// creo e popolo tanti array diversi con i dati dell'array multidimensionale
foreach ($risultatiSquadre as $key => $value) {
$nome[$key] = $value['nome'];
$golFatti[$key] = $value['golFatti'];
$golSubiti[$key] = $value['golSubiti'];
$vinte[$key] = $value['vinte'];
$perse[$key] = $value['perse'];
$giocate[$key] = $value['giocate'];
$differenza[$key] = $value['differenza'];
$punti[$key] = $value['punti'];
}
// ordino l'array per PUNTI e NOME
array_multisort($punti, SORT_DESC,$nome, $giocate,$vinte,$perse,$perse,$golFatti,$golSubiti, $differenza);
?>
un grazie va ad oronze che mi ha riportato sulla retta via, io avevo lasciato perdere quell'esempio perchè nn mi funzionava
Spero di essere stato chiaro ed utile a chi verrà ciao ciao
Alberto Cini