Les tableaux
Introduction
Les tableaux représentent en quelque sorte une forme de variable, composée de plusieurs valeurs, souvent de même type.
Sans le savoir, vous avez déjà manipulé des tableaux, par exemple, une chaîne de caractères ($prenom = ’michel’;) est un tableau, vous le verrez plus en détail dans ce chapitre.
Les tableaux vont devenir très vite indispensables et il est donc très important de bien comprendre leur fonctionnement.
En PHP, on utilisera le mot-clé array pour déclarer et utiliser une structure de type tableau.
Il existe deux types de tableaux que l’on va détailler dans les pages suivantes :
-
les tableaux numériques
-
les tableaux associatifs
Les tableaux numériques
Pour vous représenter un tableau, il suffit d’imaginer une liste de valeurs, que l’on pourrait repérer à l’aide d’un indice, par exemple :
Indice |
Valeur |
0 |
Michel |
1 |
Joséphine |
2 |
Sidonie |
3 |
Eliott |
4 |
Julie |
Par exemple, le prénom d’indice deux est Sidonie.
Comme on l’a vu en introduction, un tableau est une sorte de variable qui contient plusieurs valeurs. Pour déclarer un tableau en PHP, on utilise l’instruction array :
<?php
$prenoms = array
("Michel","Joséphine","Sidonie","Eliott","Julie");
?>
Le tableau s’appelle $prenoms dans l’exemple ci-dessus (cette dénomination est totalement arbitraire, vous pouvez le nommez comme bon vous semble).
Les valeurs sont séparées par une virgule (,) et sont saisies entre guillemets ou apostrophes pour des valeurs de type chaîne de caractères (string), sans guillemets pour des valeurs numériques.
Ce type de tableau est appelé tableau numérique, car on peut accéder à une valeur via un indice ou une clé, la première valeur d’un tableau numérique est toujours rangée à l’indice 0 (clé ou case 0), c’est-à-dire que l’instruction :
echo $prenoms[0];
Affichera :...
Les tableaux associatifs
Les tableaux associatifs fonctionnent comme les tableaux numériques, mais la clé ou l’indice n’est pas un entier numérique (0, 1, 2...) mais une étiquette unique qui permettra de référencer la case, par exemple :
Indice ou clé ou étiquette |
Valeur |
nom |
Delaplace |
prenom |
Michel |
age |
35 |
cp |
31000 |
ville |
Toulouse |
La même chose en tableau numérique aurait été :
Indice ou clé ou étiquette |
Valeur |
0 |
Delaplace |
1 |
Michel |
2 |
35 |
3 |
31000 |
4 |
Toulouse |
Vous voyez très vite l’avantage du tableau associatif, pour obtenir par exemple l’âge sur le tableau numérique, il faut l’instruction suivante :
echo $tableau_num[2];
Alors que sur le tableau associatif, c’est plus intuitif :
echo $tableau_ass['age'];
L’autre différence avec les tableaux numériques réside dans la déclaration de celui-ci, on va utiliser le mot-clé array, mais de la manière suivante :
<?php
$tableau_ass = array (
'nom' => 'Delaplace',
'prenom' => 'Michel',
'age' => '35',
'cp' => '31000',
'ville' => 'Toulouse'
);
?>...
Les constantes de type tableau
Depuis PHP 5.6, il est possible de déclarer un tableau de constantes comme ceci :
<?php
const FRUITS = array('pomme' , 'banane', 'fraise');
echo FRUITS[1]; //affiche banane
?>
Les constantes ne peuvent pas être redéfinies et sont accessibles globalement dans le code.
Les constantes ne commencent pas par le symbole $.
En PHP 7, on peut utiliser le mot-clé define pour définir un tableau de constantes :
<?php
define('FRUITS', array(
'pomme',
'banane',
'fraise'
));
echo FRUITS[1]; // affiche banane
?>
Parcourir un tableau
Il y a plusieurs façons de parcourir un tableau, à l’aide d’une boucle for, d’une boucle foreach ou des deux instructions print_r et var_dump.
1. La boucle for
Cette boucle est très utile avec les tableaux numériques. Comme vous l’avez vu au chapitre précédent, nous pouvons afficher toutes les valeurs d’un tableau en utilisant cette instruction comme ceci :
<?php
$prenoms = array
("Michel","Josephine","Sidonie","Eliott","Julie");
for ($i=0 ; $i<=4 ; $i++) {
echo $prenoms[$i].'<br>';
}
?>
Et cela affichera :
La variable $i prend successivement les valeurs de 0 à 4, et affiche donc toutes les valeurs du tableau. Dans cet exemple, on parcourt cinq valeurs (0 à 4), mais comment fait-on si on ne sait pas à l’avance combien de valeurs sont contenues dans le tableau ?
Pour répondre à cette interrogation, on va utiliser la fonction count qui permet d’obtenir la taille du tableau, soit le nombre de valeurs qu’il contient :
<?php
$prenoms = array
("Michel","Josephine","Sidonie","Eliott","Julie","Magali");
for ($i=0 ; $i<count($prenoms) ; $i++) {
echo $prenoms[$i].'<br>';
}
?>
Ce qui donnera :
Amusez-vous à redéfinir le tableau $prenoms...
Les fonctions sur les tableaux
Il est souvent très utile de vérifier si un tableau contient une valeur particulière, si une clé existe, etc. Il existe quelques fonctions qui facilitent l’utilisation des tableaux, c’est ce que l’on va voir dans les paragraphes suivants.
1. Rechercher dans un tableau
a. La fonction in_array()
Cette fonction va permettre de rechercher une valeur à l’intérieur d’un tableau. Son utilisation est simple et la fonction renvoie vrai (true) si la valeur est trouvée, faux (false) dans le cas contraire, comme suit :
<?php in_array('cle', $array); ?>
Exemple :
<?php
$prenoms = array
("Michel","Josephine","Sidonie","Eliott","Julie","Magali");
if (in_array('Eliot' , $prenoms)) {
echo "Le tableau contient Eliot";
}
else {
echo "Le tableau ne contient pas Eliot";
}?>
Retournera :
Le tableau ne contient pas Eliot
b. La fonction array_key_exist()
Comme son nom l’indique, cette fonction permet de vérifier l’existence d’une clé dans un tableau, la syntaxe est la suivante :
<?php array_key_exists('cle', $array); ?>
Exemple :
<?php
$personne = array (
'nom' => 'Delaplace',
'prenom' => 'Michel',
'age' => '35',
'cp' => '31000',
'ville' => 'Toulouse'
);
if (array_key_exist('prenom' , $personne)) {
echo "la clé PRENOM existe dans le tableau";
else {
echo "la clé PRENOM n'existe pas dans le tableau";
}
?>
Affiche :
la clé PRENOM existe dans le tableau
On peut bien sûr stocker la valeur de retour dans une variable booléenne :
<?php
$personne = array (
'nom' => 'Delaplace',
...
Les tableaux multidimensionnels
On a vu au chapitre précédent qu’un tableau pouvait contenir des valeurs numériques, des chaînes de caractères, etc. Un tableau peut également contenir des tableaux, on parle alors de tableau à plusieurs dimensions ou tableaux multidimensionnels.
Par exemple, imaginez que vous voulez gérer un parc automobile (c’est-à-dire un ensemble de véhicules), on commencerait par définir unitairement un véhicule, en prenant comme information l’immatriculation, qui constitue un index car chaque immatriculation est unique.
On peut schématiser simplement notre parc de la façon suivante :
Clé ou index (immatriculation) |
Valeurs |
|
05 BKJ 44 |
Clé |
Valeur |
marque |
Peugeot |
|
modèle |
308 |
|
couleur |
Rouge |
|
12 AZR 75 |
Clé |
Valeur |
marque |
Citroën |
|
modèle |
DS |
|
couleur |
Verte |
|
14 NBF 22 |
Clé |
Valeur |
marque |
Audi |
|
modèle |
A3 |
|
couleur |
Noire |
On constate qu’un véhicule peut être défini par son immatriculation et par un tableau contenant les informations du véhicule (sa marque, son modèle, sa couleur, etc.).
Notre parc est donc constitué d’un tableau contenant des tableaux. Mais comment définit-on ceci en PHP ? C’est assez intuitif si vous avez bien suivi le chapitre précédent, on gère successivement les clés, par exemple :...