PHP : tri d'un tableau à plusieurs colonnes

peek44 -  
 le père -
Bonjour,

Je souhaiterai pouvoir trier un tableau à plusieurs colonnes en PHP.
Voici le code correspondant à la déclaration du tableau :

$toto[]=array("dept"=>"59","ville"=>"Lille");
$toto[]=array("dept"=>"13","ville"=>"Marseille");
$toto[]=array("dept"=>"75","ville"=>"Paris");
$toto[]=array("dept"=>"33","ville"=>"Bordeaux");
$toto[]=array("dept"=>"44","ville"=>"Nantes");

Je voudrai que la donnée ville ressort de façon alphabétique selon :
Bordeaux
Lille
Marseille
Nantes
Paris

J'ai testé avec sort, asort, array_multisort mais j'obtiens toujours des messages d'erreurs, est-ce que quelqu'un aurait la solution ?

Merci d'avance

2 réponses

  1. le père
     
    Bonjour

    avec usort :
    <?php
    
    function MaFonctionTri($element1,$element2) {
    
    // comparer les noms de villes
      if ($element1['ville'] < $element2['ville'] ) return -1;
      if ($element1['ville'] > $element2['ville'] ) return 1;
    
    // si même ville, comparer les départements  
      if ($element1['dept'] == $element2['dept'] ) return 0;
      return ($element1['ville'] < $element2['ville'] ) ?-1:1;
    }
    ?>
    
    <?php
    $toto[]=array("dept"=>"59","ville"=>"Lille");
    $toto[]=array("dept"=>"13","ville"=>"Marseille");
    $toto[]=array("dept"=>"75","ville"=>"Paris");
    $toto[]=array("dept"=>"33","ville"=>"Bordeaux");
    $toto[]=array("dept"=>"44","ville"=>"Nantes");
    
      usort($toto,'MaFonctionTri');
      echo '<table>';
      foreach ($toto as $UneVille) {
        echo '<tr><td>',$UneVille['ville'],'</td><td>',$UneVille['dept'],'</td></tr>';
      } 
    echo '</table>';
    ?>
    0