article(s) dans votre panier VOIR

Tuto PHP/MySQL | Exercice sur le tri des tableaux associatifs

  • Vidéo 48 sur 158
  • 4h43 de formation
  • 158 leçons

Un contenu flash devrait s'afficher ici. Votre navigateur ne comporte pas de plugin flash, ou il ne s'est pas correctement initialisé.

Vous pouvez télécharger le plugin flash depuis le site d'Adobe à l'adresse suivante : http://get.adobe.com/flashplayer/.

Pour accéder à la suite de cette formation, vous devez vous abonner.
previous
summary
resume
next
play
Exercice sur le tri des tableaux associatifs
00:00 / 02:36
HD
fullscreen
Je m’abonne
à partir de 16,6 € / mois
  • Visionnage en ligne
  • Accès illimité à toutes nos formations
OU
J'achète uniquement
la formation
49,90€
  • Téléchargement + VOD à vie
  • Accès uniquement à cette formation

Sommaire de la formation

Détails de la formation

Voici un deuxième exercice un peu plus complexe.

Ecrivez le code nécessaire pour trier par ordre alphabétique sur les clés et sur tous les niveaux ce tableau de tableau :

$chiffres = array("Romain" => array("un"=>"I", "deux"=>"II", "trois"=>"III", "quatre"=>"IV", "cinq"=>"V"),

                  "Arabe"  => array("un"=>"1", "deux"=>"2", "trois"=>"3", "quatre"=>"4", "cinq"=>"5"));

Solution

Faites une pause dans la vidéo pour vous permettre de saisir le code. Poursuivez la vidéo pour voir la solution.

Vous vous en doutez certainement, la solution de ce problème réside dans la définition d'une fonction récursive. Pour bien faire les choses, nous définirons deux fonctions :

Une responsable du tri des données et une responsable de leur affichage.

Commencez par définir le tableau associatif $chiffres.

Cette opération terminée, appelez les fonctions trier et afficher en leur transmettant le tableau $chiffres.

Pour être en mesure de modifier les données de façon durable (c'est-à-dire en dehors de la fonction), la fonction trier travaille avec l'adresse du tableau qui lui est passé et non avec le tableau lui-même.

Un tri croissant est effectué sur les clés. Puis une boucle foreach parcourt tous les éléments du tableau. Un test est effectué sur chaque valeur. S'il s'agit d'un tableau, il est passé de façon récursive à la fonction trier pour effectuer un tri croissant sur ses valeurs.

La fonction affiche est également récursive. Elle utilise une boucle foreach pour parcourir tous les éléments du tableau associatif. Pour chaque couple clé/valeur, la clé est affichée. Si la valeur est un tableau, il est passé de façon récursive à la fonction affiche. Dans le cas contraire, il est affiché, suivi d'un passage à la ligne.

Remarquez les balises blockquote et /blockquote autour de la boucle foreach. C'est grâce à ces instructions que les éléments affichés sont indentés vers la droite.

 

<?php

  function trier(&$a){

    ksort($a);

    foreach($a as $cle=>&$valeur) {

    if (is_array($valeur))

      trier($valeur);

    }

  }  

 

  function afficher($a){

    echo "<blockquote>";

    foreach($a as $cle=>$valeur) {

      echo $cle." : ";

      if (is_array($valeur))

        afficher($valeur);

      else

        echo $valeur."<br>";      

    }

    echo "</blockquote>";

  }

 

  $chiffres = array("Romain" => array("un"=>"I", "deux"=>"II", "trois"=>"III", "quatre"=>"IV", "cinq"=>"V"),

                    "Arabe"  => array("un"=>"1", "deux"=>"2", "trois"=>"3", "quatre"=>"4", "cinq"=>"5"));

  trier($chiffres);  

  afficher($chiffres);

 

?>