PHP : Classer simplement ses tableaux bidimensionnels
Pour continuer la série des Astuces PHP, n’étant pas du tout satisfait de la fonction array_multisort() (que je trouve trop complexe d’utillisation et qui renvoi parfois des résultats obscurs !), je vous propose une solution alternative qui vous permettra de classer un tableau bidimensionnel selon une de ses colonnes.
Si comme moi vous utilisez souvent des tableaux bidimensionnels pour traiter le résultat de vos requêtes SQL, cette fonction pourra sûrement vous être utile !
function sortByKey($array, $index, $order = 'ASC') { $sort = array(); foreach ($array as $key => $val) { $sort[$key] = $val[$index]; } natcasesort($sort); $output = array(); foreach($sort as $key => $val) { $output[] = $array[$key]; } if($order == 'DESC') { $output = array_reverse($output); } return $output; }
La fonction est simple à utiliser : elle prends comme argument le tableau à classer et la colonne selon laquelle le classement sera fait. Un argument optionnel spécifie le sens du classement.
Rien ne vaut mieux qu’un bel exemple :
$a_classer = array( 0 => array('name' => 'Jean', 'date' => '2008-04-01', 'gender' => 'M'), 1 => array('name' => 'Paul', 'date' => '2008-06-08', 'gender' => 'M'), 2 => array('name' => 'Joseph', 'date' => '2005-11-23', 'gender' => 'M'), 3 => array('name' => 'Albert', 'date' => '2007-09-13', 'gender' => 'M'), 3 => array('name' => 'Sonia', 'date' => '2007-12-30', 'gender' => 'S') ); // On classe par prénom print_r(sortByKey($a_classer, 'name' , 'ASC')); //On classe par date d'inscription print_r(sortByKey($a_classer, 'date' , 'DESC'));
Voila, plus de prises de tête avec array_multisort() ou de nouvelles requêtes inutiles !
Billets similaires
Tags: PHP //



























Laissez un commentaire