Les tableaux
Dernière mise à jour le 8 octobre 2022
Les tableaux sont massivement utilisés en PHP.
Il existe deux types de tableaux : les tableaux indexés numériquement et les tableaux associatifs, parfois appelés "dictionnaires".
Tableaux indexés numériquement
C'est le tableau ordinaire, celui qu'on retrouve dans tous les langages de programmation.
Créer un tableau indexé numériquement
La création se fait généralement à l'aide de l'instruction array
. Comme echo
, il ne s'agit pas d'une fonction, mais bien d'une construction du langage (instruction) :
$hobbits = array(); // avec initialisation $hobbits = array("Frodon", "Sam", "Merry");
L'instruction array
n'est pas nécessaire si le tableau est initialisé au moment de sa création :
// avec initialisation, mais sans l'instruction "array" $hobbits[0] = "Frodon"; $hobbits[1] = "Sam"; $hobbits[2] = "Merry";
Un tableau peut être initialisé avec une série de valeurs consécutives à l'aide de la fonction range()
:
$nombres = range(1, 10); $nombres = range(-10, 10); $nombres = range(10, 1); // ordre décroissant $lettre = range('a', 'z');
L'accès à un tableau indexé numériquement s'effectue comme dans les autres langages de programmation :
// affectation $hobbits[3] = "Pippin"; // lecture echo $hobbits[1]; // Sam
La fonction count()
retourne le nombre d'éléments d'un tableau :
$hobbits = array("Frodon", "Sam", "Merry", "Pippin"); echo count($hobbits); // 4 // sizeof() est un alias de count() echo sizeof($hobbits); // 4
Pour ajouter un élément à la fin du tableau, même si on ignore la taille du tableau, il suffit de ne pas donner l'indice et de ne fournir qu'une paire de crochets vide :
$hobbits[] = "Bilbo"; // ajoute "Bilbo" à la position 4 // même chose que... $hobbits[count($hobbits)] = "Bilbo";
Parcourir un tableau indexé numériquement
L'affichage du contenu d'un tableau ordinaire se fait généralement à l'aide d'une boucle for
:
for ($i = 0; $i < sizeof($hobbits); $i++) { echo $hobbits[$i] . "<br>"; }
Sortie :
Frodon
Sam
Merry
Pippin
Bilbp
Mais peut se faire aussi avec un foreach
:
foreach ($hobbits as $un_hobbit) { echo $un_hobbit . "<br>"; }
À chaque tour de boucle, la variable $un_hobbit
prend la valeur du prochain élément du tableau $hobbits
.
Sortie :
Frodon
Sam
Merry
Pippin
Bilbp
Fonctions pour ajouter ou retirer des éléments
array_push()
Cette fonction empile un ou plusieurs éléments à la fin d'un tableau et retourne le nouveau nombre d'éléments de celui-ci. Exemple :
$tab = array("A", "B", "C", "D"); $nb = array_push($tab, "E", "F", "G"); // A, B, C, D, E, F, G echo $nb; // 7
Si on veut seulement ajouter un élément au tableau, il est plus économique de ne pas passer par une fonction :
$tab[] = "H";
array_pop()
Cette fonction dépile un élément de la fin d'un tableau et retourne cet élément. Exemple :
$tab = array("A", "B", "C", "D"); $elem = array_pop($tab); // A, B, C echo $elem; // D
array_unshift()
Cette fonction empile un ou plusieurs éléments au début d'un tableau et retourne le nouveau nombre d'éléments de celui-ci. Exemple :
$tab = array("A", "B", "C"); $nb = array_unshift($tab, "X", "Y"); // X, Y, A, B, C echo $nb; // 5
array_shift()
Cette fonction dépile un élément au début d'un tableau et retourne cet élément. Exemple :
$tab = array("A", "B", "C"); $elem = array_shift($tab); // B, C echo $elem; // A
Autres fonctions utiles
PHP offre plusieurs fonctions très utiles pour manipuler les tableau. Cherchez un peu avant de réinventer la roue!
Fonction | Utilité |
---|---|
in_array() |
Indique si une valeur appartient à un tableau |
array_search() |
Recherche dans un tableau la première clé associée à la valeur |
is_array() |
Détermine si une variable est un tableau |
array_unique() |
Supprime les doublons d'un tableau |
array_reverse() |
Inverse l'ordre des éléments d'un tableau |
max() |
Retourne la plus grande valeur d'un tableau |
min() |
Retourne la plus petite valeur d'un tableau |
array_rand() |
Prend une ou plusieurs clés, au hasard dans un tableau |
array_count_values() |
Compte le nombre de valeurs d'un tableau |
implode() |
Rassemble les éléments d'un tableau en une chaîne |
sort() |
Trie un tableau en ordre croissant |
rsort() |
Trie un tableau en ordre décroissant |
Tableaux associatifs
L'autre genre de tableau offert par PHP est le tableau associatif.
Un tableau est dit "associatif" lorsque l'indice (qu'on appelle "clé") n'est plus un nombre entier, mais une chaîne de caractères.
Créer un tableau associatif
Voici trois exemples de création et d'initialisation du même tableau associatif :
$animaux = array( "chien" => "Fido", "chat" => "Ti-mine", "singe" => "Bob"); // ou encore $animaux = array("chien" => "Fido"); $animaux["chat"] = "Ti-mine"; $animaux["singe"] = "Bob"; // ou encore $animaux["chien"] = "Fido"; $animaux["chat"] = "Ti-mine"; $animaux["singe"] = "Bob";
Et voici un exemple d'accès au contenu du même tableau associatif :
echo $animaux["singe"]; // affiche "Bob"
Parcours d'un tableau associatif
Le défi ici est que l'index n'est pas de type numérique.
Bien qu'il existe plusieurs façons de parcourir de tels tableaux, la plus élégante fait appel à l'instruction foreach
, disponible depuis PHP 4.
La première version du foreach
est :
foreach (tableau as valeur) { instructions }
Dans cette version du foreach
, la première variable entre parenthèses est le nom du tableau et la seconde contiendra à chaque tour de boucle la valeur d'une case consécutive du tableau.
Exemple :
echo "<h2>Liste des animaux</h2>"; foreach ($animaux as $nom) { echo "Cet animal s'appelle $nom <br>"; }
Qui donne la sortie suivante :
Cet animal s'appelle Fido
Cet animal s'appelle Ti-mine
Cet animal s'appelle Bob
Le tableau suivant explique ce qui s'est pasé :
Tour de boucle | Contenu de $nom |
---|---|
0 | Fido |
1 | Ti-mine |
2 | Bob |
La seconde version du foreach
permet d'afficher les couples clé-valeur :
foreach (tableau as cle => valeur) { instructions }
Dans cette autre version du foreach
, la première variable entre parenthèses est le nom du tableau, tandis que la deuxième et la troisième contiendront respectivement à chaque tour de boucle la clé et la valeur d'une case consécutive du tableau.
Exemple :
echo "<h2>Liste des animaux</h2>"; foreach ($animaux as $espece => $nom) { echo "Ce $espece s'appelle $nom <br>"; }
Qui donne la sortie suivante :
Ce chien s'appelle Fido
Ce chat s'appelle Ti-mine
Ce singe s'appelle Bob
Le tableau suivant explique ce qui s'est pasé :
Tour de boucle | Contenu de $espece | Contenu de $nom |
---|---|---|
0 | chien | Fido |
1 | chat | Ti-mine |
2 | singe | Bob |
Fonctions utiles
Fonction | Utilité |
---|---|
array_key_exists() |
Vérifie si une clé existe dans un tableau |
array_keys() |
Retourne toutes les clés ou un ensemble des clés d'un tableau |
array_values() |
Retourne toutes les valeurs d'un tableau |
asort() |
Trie un tableau en ordre croissant et conserve l'association des index |
arsort() |
Trie un tableau en ordre décroissant et conserve l'association des index |
ksort() |
Trie un tableau en fonction des clés en ordre croissant |
krsort() |
Trie un tableau en fonction des clés en ordre décroissant |
Questions et exercices de révision
Nous ne fournirons pas les réponses à ces questions pour deux bonnes raisons. La première est que celles-ci se trouvent dans les notes de cours. La seconde est que, dans certains cas, ce serait presque donner la réponse à des questions d'examen.
Question 1
Expliquez ce qui distingue un tableau associatif d'un tableau indexé numériquement.
Question 2
Vrai ou faux? En PHP, on peut créer des tableau multidimensionnels. Si vous ne savez que répondre, essayez pour voir!
Question 3
Vrai ou faux? En PHP, on peut créer des tableaux sans utiliser le mot clé array
.
Question 4
En plus de la fonction array_push(), donnez deux façon d'ajouter un élément à la fin d'un tableau.
Question 5
Soit le code suivant :
$nombres = array(); nombres[0] = 27; nombres[1] = -15; nombres[3] = 38;
Qu'arrive-t-il avec nombres[2]
? Encore une fois, si vous ne savez que répondre, essayez pour voir!
Question 6
Que fait le code suivant?
$donnees = range('Z', 'A');
Question 7
Donnez le code d'une boucle qui affiche le contenu du tableau de la question précédente.
Question 8
Soit le code suivant pour créer un tableau associatif :
$objet = array("forme" => "rectangle", "largeur" => "50", "hauteur" => "25", "couleur" => "rouge" );
Donnez le code pour produire l'affichage suivant à partir du tableau de la question précédente :
rectangle
50
25
rouge
Question 9
Donnez le code pour produire l'affichage suivant :
forme = rectangle
largeur = 50
hauteur = 25
couleur = rouge
Question 10
Donnez les deux instructions PHP qui permettent d'obtenir la taille d'un tableau.
Question 11
Que vont afficher les instructions de la question précédente (taille du tableau) pour la tableau créé ici?
$tab = array(); $tab[1] = 10; $tab[2] = 20; $tab[3] = 30;
Question 12
Donnez les fonctions qui permettent respectivement de trier un tableau en ordre alphabétique croissant, de trier un tableau en ordre alphabétique décroissant et d'inverser le contenu d'un tableau.