array
en anglais).
Les tableaux vont nous servir à stocker plusieurs valeurs en même temps et vont donc se révéler très utiles pour stocker les résultats successifs d’une boucle par exemple ou n’importe quelle liste de valeurs pour laquelle il serait long de créer une variable pour chaque valeur.
Présentation des tableaux en PHP
Les tableaux en PHP sont des variables spéciales qui peuvent stocker plusieurs valeurs en même temps.
Dans un tableau, chaque valeur va être associée à une clef unique. Cette clef va nous permettre notamment de récupérer la valeur associée. Nous allons pouvoir définir les différentes clefs ou laisser le PHP générer automatiquement les clefs pour les différentes valeurs d’un tableau.
On va pouvoir créer trois types de tableaux différents en PHP :
- Des tableaux numérotés ou indexés (les clefs vont être des nombres) ;
- Des tableaux associatifs (nous allons définir la valeur que l’on souhaite pour chaque clef) ;
- Des tableaux multidimensionnels (tableaux qui stockent d’autres tableaux en valeur).
Nous allons bien évidemment étudier chacun de ces trois types de tableaux dans la suite de ce cours et présenter leurs spécificités.
Pour créer un tableau, on peut soit utiliser la structure de langage array()
, soit le nouvelle syntaxe plus courte []
.
On va pouvoir passer autant d’argument qu’on souhaite stocker de valeurs dans notre tableau à array()
ou dans []
. Les arguments vont pouvoir être soit des valeurs simples (auquel cas les clefs seront des entiers générés automatiquement), soit des paires clef => valeur
.
Création d’un tableau numéroté ou indexé en PHP
Les tableaux numérotés sont le type de tableaux le plus simple à créer en PHP puisque les clefs vont être générées automatiquement par le PHP.
Pour créer un tableau numéroté en PHP, il suffit en fait d’indiquer une série de valeurs et le PHP associera automatiquement une clef unique à chaque valeur, en commençant avec la clef 0 pour la première valeur, la clef 1 pour la deuxième valeur, la clef 2 pour la troisième valeur, etc.
Regardez plutôt le code ci-dessous. On crée ici deux tableaux numérotés $prenoms
et $ages
en utilisant les deux syntaxes vues précédemment.
<!DOCTYPE html> <html> <head> <title>Cours PHP & MySQL</title> <meta charset="utf-8"> <link rel="stylesheet" href="cours.css"> </head> <body> <h1>Titre principal</h1> <?php $prenoms = array('Mathilde', 'Pierre', 'Amandine', 'Florian'); $ages = [27, 29, 21, 29]; ?> <p>Un paragraphe</p> </body> </html>
Ici, on crée deux variables tableau $prenoms
et $ages
. Notez bien qu’on va toujours stocker nos tableaux dans des variables. Notre premier tableau stocke 4 valeurs qui sont ici des chaines de caractères. Notre deuxième tableau stocke 4 chiffres.
On peut tout à fait créer des tableaux qui vont stocker des chaines de caractères, des nombres, des booléens, etc. Comme d’habitude, seules les chaines de caractères doivent être entourées d’apostrophes ou de guillemets droits.
Ici, le PHP va automatiquement créer les clefs qu’on appelle également indices ou index et les associer aux différentes valeurs. La valeur Mathilde de notre premier tableau va avoir la clef 0, la valeur Pierre la clef 1, etc. De même, la clef 0 va être associée à la valeur 27 de notre deuxième tableau, la deuxième valeur (le premier 29) va être associée à la clef 1 et etc.
On va également pouvoir créer un tableau indice par indice et valeur par valeur en précisant ici les indices à associer à chaque valeur. Dans ce cas-là, il faudra utiliser la syntaxe suivante :
<!DOCTYPE html> <html> <head> <title>Cours PHP & MySQL</title> <meta charset="utf-8"> <link rel="stylesheet" href="cours.css"> </head> <body> <h1>Titre principal</h1> <?php $prenoms[0] = 'Mathilde'; $prenoms[1] = 'Pierre'; $prenoms[2] = 'Amandine'; $prenoms[3] = 'Florian'; $ages[0] = 27; $ages[1] = 29; $ages[2] = 21; $ages[3] = 29; ?> <p>Un paragraphe</p> </body> </html>
Afficher les valeurs d’un tableau numéroté
Pour afficher les valeurs d’un tableau numéroté une à une, il suffit d’echo
notre variable tableau en précisant l’indice (entre crochets) correspondant à la valeur que l’on souhaite afficher.
<!DOCTYPE html> <html> <head> <title>Cours PHP & MySQL</title> <meta charset="utf-8"> <link rel="stylesheet" href="cours.css"> </head> <body> <h1>Titre principal</h1> <?php $prenoms = ['Mathilde', 'Pierre', 'Amandine', 'Florian']; echo $prenoms[0]. '<br>'; echo $prenoms[2]; ?> <p>Un paragraphe</p> </body> </html>
Pour afficher toutes les valeurs d’un tableau numéroté d’un coup, nous allons cette fois-ci devoir utiliser une boucle for
.
Nous allons boucler sur les indices de notre tableau et nous allons récupérer la valeur associée à l’indice en question à chaque nouveau passage dans la boucle.
Il va donc avant tout falloir déterminer la taille de notre tableau, c’est à dire le nombre de valeurs contenues dans notre tableau. Bien évidemment, nous travaillons pour le moment avec des tableaux qu’on crée manuellement et on peut donc ici compter le nombre de valeurs à la main mais notez bien ici qu’en pratique on ne saura pas forcément à priori combien de valeurs sont stockées dans un tableau.
La façon la plus simple de déterminer la taille d’un tableau est d’utiliser la fonction count()
qui va tout simplement prendre un tableau en argument et va retourner le nombre d’éléments de ce tableau.
Une fois qu’on a déterminé la taille de notre tableau, il va être très simple de créer notre boucle for
.
<!DOCTYPE html> <html> <head> <title>Cours PHP & MySQL</title> <meta charset="utf-8"> <link rel="stylesheet" href="cours.css"> </head> <body> <h1>Titre principal</h1> <?php $prenoms = ['Mathilde', 'Pierre', 'Amandine', 'Florian']; //On récupère la taille du tableau et on la stocke dans $taille $taille = count($prenoms); //On peut soit parcourir le tableau et afficher les valeurs une à une for($i = 0; $i < $taille; $i++){ echo $prenoms[$i]. ', '; } echo '<br><br>'; //...soit les stocker dans une autre variable et echo cette variable for($i = 0; $i < $taille; $i++){ $p .= $prenoms[$i]. ', '; } echo $p; ?> <p>Un paragraphe</p> </body> </html>
Ici, on utilise la fonction count()
pour déterminer le nombre de valeurs dans notre tableau puis on boucle sur les indices en partant de l’indice 0. Lors du premier passage dans la boucle, on va donc récupérer la valeur associée à l’indice 0 du tableau ; lors du deuxième passage, nous allons récupérer la valeur associée à l’indice 1 et etc.
Notre première boucle for
va echo
la valeur associée à la clef à chaque passage de boucle tandis que notre deuxième boucle for
va stocker les valeurs liées à chaque clef dans la variable $p
grâce à l’opérateur d’affectation +=
.
Cette technique va très bien fonctionner tant que nos tableaux numérotés vont avoir des indices « naturels ». En effet, il est tout à fait possible d’attribuer les indices manuellement et de sauter certains indices pour stocker nos valeurs dans nos variables tableaux.
Dans ce cas-là, on ne pourra pas récupérer toutes les valeurs en bouclant sur les indices comme ci-dessus mais on utilisera plutôt une boucle foreach
qui est une boucle spécialement créée pour les tableaux.
Nous allons utiliser cette syntaxe :
<!DOCTYPE html> <html> <head> <title>Cours PHP & MySQL</title> <meta charset="utf-8"> <link rel="stylesheet" href="cours.css"> </head> <body> <h1>Titre principal</h1> <?php $prenoms = ['Mathilde', 'Pierre', 'Amandine', 'Florian']; //On rajoute une valeur à $prenoms et on lui associe la clef 8 $prenoms[8] = 'Lisa'; $taille = count($prenoms); /*On tente d'afficher les valeurs de notre tableau en utilisant le *résultat de count() et en bouclant sur les indices*/ for($i = 0; $i < $taille; $i++){ $p .= $prenoms[$i]. ', '; } echo $p. '<br><br>'; //On utilise une boucle foreach ($tableau as $valeurs) foreach ($prenoms as $valeurs){ $resultat .= $valeurs. ', '; } echo $resultat; ?> <p>Un paragraphe</p> </body> </html>
Ici, boucler sur les indices avec une boucle for
ne permet pas de renvoyer toutes les valeurs du tableau tout simplement car notre boucle va s’arrêter avant d’atteindre l’indice 8. En effet, count()
sert à compter le nombre d’éléments d’un tableau. Ici, notre fonction renvoie donc 5. On va donc ensuite boucler sur les indices de 0 à 4, ce qui ne nous apporte pas le résultat attendu.
La boucle foreach
, au contraire, va nous permettre de parcourir des tableaux élément par élément. A chaque nouveau passage dans la boucle, la valeur d’un élément du tableau va être placée dans la variable qu’on a ici appelé $valeurs
et la boucle va aller chercher la valeur suivante jusqu’à arriver à la fin du tableau.