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.

<?php

// 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);

?>
 

Lascia un commento

Categorie

Cerca

Meta