Ordinare un array per più di un campo
In questo articolo andrò a descrivere come ordinare un array per piu di un campo, mettiamo ad esempio di avere un elenco di persone con vari dati tra cui il cognome e l’età della persona, e voler avere lo stesso elenco ordinato per l’età delle persone e, a parità di età, per cognome.
Ecco un listato php in cui andiamo a fare il tipo di ordinamento descritto sopra.
// Costruzione dell’array non ordinato
$people[0]["nome"]="mario";
$people[0]["cognome"]="rossi";
$people[0]["eta"]="45";
$people[1]["nome"]="arturo";
$people[1]["cognome"]="bianchi";
$people[1]["eta"]="25";
$people[2]["nome"]="mario";
$people[2]["cognome"]="bianchi";
$people[2]["eta"]="45";
// Visualizzazione dell’array non ordinato
var_dump($people);
// Creazione lista valori dei campi da ordinare
foreach ($people as $key => $row) {
$eta[$key] = $row[‘eta’];
$cognome[$key] = $row[‘cognome’];
}
// Ordinamento dell’array prima per età, poi per cognome
@array_multisort($eta, SORT_ASC, $cognome, SORT_ASC, $people);
// Visualizzazione dell’array ordinato
var_dump($people);
?>