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 !

Brindavoine

Partager et découvrir :
  • email
  • Twitter
  • PDF
  • Facebook
  • Netvibes
  • Posterous
  • Bluegger
  • Fuzz
  • Tapemoi
  • Scoopeo
  • Zataz
  • MisterWong Fr
  • Digg
  • Reddit
  • Technorati
  • Wikio
  • Wikio IT
  • Yahoo! Buzz

Billets similaires

Tags: PHP // 1 Commentaire »

Une Réponse pour “PHP : Classer simplement ses tableaux bidimensionnels”

  1. SUPER SCRIPT !

    J’ai eu besoin cet été de faire des classements sur mes données extraits d’une table mysql.

    J’avais besoin de faire un double tri et cette méthode m’a apporté une solution simple et élégante à mon problème.

    Merci pour ce bout de code qui m’a fait gagner un temps fou.

Laissez un commentaire