Les tableaux
Dernière mise à jour le 31 août 2026
Les tableaux sont massivement utilisés en PHP.
Il existe deux types de tableaux :
- les tableaux indexés numériquement;
- 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); // 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 $nombres = range(-5 5); // -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5 $nombres = range(10, 1); // 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 $lettre = range('a', 'f'); // 'a', 'b', 'c', 'd', 'e', 'f'
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
Bilbo
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
Bilbo
Fonctions pour ajouter ou retirer des éléments
array_push()
Cette fonction...
- empile un ou plusieurs éléments à la fin d'un tableau;
- 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 du tableau;
- 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 du tableau;
- 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 du tableau;
- et retourne cet élément. Exemple :
$tab = array("A", "B", "C"); $elem = array_shift($tab); // B, C echo $elem; // AAutres fonctions utiles
PHP offre plusieurs fonctions très utiles pour manipuler les tableaux. 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 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. On parle alors d'une clé textuelle.
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
foreachest :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 :
Liste des animaux
Cet animal s'appelle Fido
Cet animal s'appelle Ti-mine
Cet animal s'appelle Bob
Le tableau suivant explique ce qui s'est passé :
Tour de boucle Contenu de $nom (valeur) 0 Fido 1 Ti-mine 2 Bob La seconde version du
foreachpermet 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 :
Liste des animaux
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 (clé) Contenu de $nom (valeur) 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 array_count_values()Compte le nombre de valeurs données 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 Exercices
Exercice 1
Vous devez écrire une application Web qui permet de trier les chaînes de caractères entrées par l'utilisateur. Ce dernier peut entrer au moins 5 chaînes à l'aide d'un formulaire semblable au suivant :
Le formulaire permet d'entrer au moins 5 chaînes de caractères Les données sont envoyées à un script PHP qui...
- range les chaînes dans un tableau;
- tri le tableau (ordre alphabétique ascendant);
- affiche le contenu du tableau sous forme de liste à puces (en ignorant les éléments manquants).
Exemple de sortie :
Le contenu est affiché sous forme de liste à puces Dans l'exemple suivant, l'une des chaînes est manquante et sera ignorée :
La chaîne 2 est manquante
La chaîne manquante est simplement ignorée Cet exercice sera corrigé dans une semaine.
Questions et exercices de révision
AVERTISSEMENT
Essayez de répondre à ces questions par vous-mêmes, soit en cherchant dans ce document, soit en écrivant du code. Il n'y a AUCUN BÉNÉFICE à chercher des réponses toutes faites aiileurs.
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
rougeQuestion 9
Donnez le code pour produire l'affichage suivant :
forme = rectangle
largeur = 50
hauteur = 25
couleur = rougeQuestion 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 le tableau créé ici (tableau débutant à l'indice 0)?
$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.
Question 13
Donnez la sortie du code suivant :
$tab = array( "largeur" => 20, "hauteur" => 200, 2 => "banane", "couleur" => "jaune", ); echo $tab[2];