M1202 - Algorithmique et PHP
Transcription
M1202 - Algorithmique et PHP
M1202 - Algorithmique et PHP David Annebicque 2016 1 Manipulation des tableaux PHP 1.1 Tableaux indexés en PHP Les tableaux sont une structure de données qui permet de stocker une suite de valeurs en mémoire sous un seul nom, chaque valeur est repérée par un numéro. La taille t du tableau donne son nombre d’éléments, dans l’exemple cidessus, t = 7. Les indices de tableau vont de 0 à t-1. En php, pour connaitre la taille d’un tableau on utilise l’instruction count($tableau), où $tableau est la variable de type array pour laquelle vous souhaitez connaı̂tre la taille. Essayez le code ci-dessous pour voir le résultat. Listing 1 – Exemples 1 2 3 4 5 6 7 8 9 10 11 <? php // Creer un tableau vide $tabNotes = array (); // Ajouter de nouvelles valeurs a un tableau $tabNotes [] = 12.5; $tabNotes [] = 9; // Afficher les valeurs echo ’ La ␣ valeur ␣ a ␣ l \ ’ indice ␣ 0 ␣ est ␣ : ␣ ’. $tabNotes [0]; echo ’ La ␣ valeur ␣ a ␣ l \ ’ indice ␣ 1 ␣ est ␣ : ␣ ’. $tabNotes [1]; 1 12 13 14 15 16 17 18 19 ?> // Ajouter une autre note $tabNotes [] = 11; // Changer une note puis afficher la nouvelle valeur $tabNotes [1] = 8; echo ’ La ␣ valeur ␣ a ␣ l \ ’ indice ␣ 1 ␣ est ␣ : ␣ ’. $tabNotes [1]; Essayez le code ci-dessous pour voir le résultat. Listing 2 – Exemple : Calcul d’une moyenne (solution peu élégante) 1 <? php 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ?> // Creer un tableau rempli $tabNotes = array (12.5 , 9 , 11); // Ajouter de nouvelles valeurs a un tableau $tabNotes [] = 7; $tabNotes [] = 12.5; // Calculer la moyenne $somme = $tabNotes [0] + $tabNotes [1] + $tabNotes [2] + $tabNotes [3] + $tabNotes [4]; echo ’ La ␣ somme ␣ vaut ␣ : ␣ ’. $somme ; $moyenne = $somme /5; echo ’ La ␣ moyenne ␣ vaut ␣ : ␣ ’. $moyenne ; Évidemment cette solution n’est pas pleinement satisfaisante. En effet, il est rare d’avoir un tableau d’uniquement 5 valeurs. La programmation (que ce soit web ou autre), doit nous faciliter la tâche dans la manipulation d’un tableau. Il serait donc plus judicieux d’écrire le code ci-dessous pour calculer une moyenne Listing 3 – Exemple : Calcul d’une moyenne (solution élégante) 1 2 3 4 5 6 <? php // Creer un tableau rempli $tabNotes = array (12.5 , 9 , 11 , 7 , 12.5); $somme =0; // initialiser une variable 2 7 8 9 10 11 12 13 14 15 16 17 ?> 2 // Parcourir un tableau for ( $i =0; $i < count ( $tabNotes ); $i ++) { $somm e = $somme + $tabNotes [ $i ]; } // Calculer la moyenne $moyenne = $somme / count ( $tabNotes ) ; echo ’ <p > La ␣ moyenne ␣ vaut : ␣ ’. $moyenne . ’ </p > ’. " \ n " ; Tableaux associatifs en PHP Un tableau associatif en PHP est un tableau dont les indices ne sont pas des nombres, mais des chaı̂nes de caractères. Un tableau associatif permet donc d’associer un nom à une valeur dans un tableau. Listing 4 – Exemple : Tableau associatif 1 <? php 2 3 4 5 6 7 8 9 10 11 12 13 14 ?> // Creer un tableau associatif rempli $tabAssoNotes = array ( " matiere " = > " m1202 " , " note1 " = > 12 , " note2 " = > 7 , " note3 " = > 11.5 ); // Afficher les valeurs echo ’ <p > ’. $tabAssoNotes [ " matiere " ]. ’: ␣ ’. $tabAssoNotes [ " note1 " ]. ’ ,␣ ’. $tabAssoNotes [ " note2 " ]. ’ ,␣ ’. $tabAssoNotes [ " note3 " ]. ’ </p > ’. " \ n " ; Dans ce type de tableau, on peut donc accéder aux notes directement avec un nom ”note1”, ”note2”, ”note3”. L’ordre dans lequel les éléments sont dans le tableau n’a donc plus d’importance, a priori. Car on y accède avec un nom. On peut également mélanger différentes données (un nom de matière et des notes). Une nouvelle fois, puisqu’on ne connait pas forcément la taille du tableau, ni forcément toutes les clés, on peut parcourir le tableau avec une boucle. 3 Listing 5 – Exemple : Parcours d’un tableau associatif 1 <? php 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ?> // Creer un tableau associatif rempli $tabAssoNotes = array ( " matiere " = > " m1202 " , " note1 " = > 12 , " note2 " = > 7 , " note3 " = > 11.5 ); echo ’ <p > ’; // Afficher les valeurs foreach ( $tabAssoNotes as $cle = > $valeur ) { echo $cle . ’: ␣ ’. $valeur . ’ < br ␣ / > ’. " \ n " ; } echo ’ </p > ’; La notation ”$cle => $valeur” implique que pour chaque ”case” du tableau associatif on recopie dans $cle le ”nom” de la case, la clé, et dans $valeur le contenu de la ”case”, la valeur. 3 Exercices 3.1 Exercice 1 : Comparaison de température Vous hésitez pour partir vous installer entre Madrid et Barcelone, vous voulez aller dans la ville la plus chaude en moyenne. On vous donne les informations suivantes : 1 <? php 2 3 4 5 6 ?> // temperatures moyennes mensuelles de Barcelone $tabBarcel = array (8 ,9 ,11 ,12 ,16 ,20 ,22 ,23 ,21 ,16 ,12 ,10); // temperatures moyennes mensuelles de Madrid $tabMadrid = array (6 ,8 ,11 ,12 ,16 ,21 ,25 ,25 , 20 ,14 ,9 ,7); Chaque case correspond à un mois de l’année, dans l’ordre chronologique. 1. Ecrire un programme pour afficher dans un tableau HTML ces deux tableaux 2. Créer un tableau pour afficher dans chaque ligne de votre tableau le mois correspondant 4 3. Modifier le programme, pour que sur chaque mois, on puisse lire la ville la plus chaude On doit obtenir le résultat ci-dessous : 5