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