Temps de lecture approximative : 17 minutes

Les tableaux - PHP

A l'instar des boucles, les tableaux sont essentiels en développement. En PHP, comme dans d'autres langages de programmation, les tableaux sont en réalité un type de variable particulier. En résumé, ils permettent de stocker plusieurs valeurs dans une seule variable. Ils permettent de répondre à beaucoup de besoins en développement et leur maîtrise est indispensable. Cependant, leur utilisation n'est pas toujours évidente, simple. Nous allons les aborder étape par étape.

Un tableau, c'est quoi ?

Un tableau est un type de variable spécial. En PHP, comme dans d'autres langages, les tableaux sont appelés des array. Le type de variable pour un tableau est donc array. Jusqu'à maintenant, nos variables étaient plutôt simples. Une valeur était assignée à un nom de variable comme ci-dessous :

PHP
<?php
   $ville = 'Fontainebleau';
   echo $ville;
?>
Résultat
Fontainebleau

Les instructions ci-dessus peuvent être matérialisées avec le schéma suivant :

Nom Valeur
$ville Fontainebleau

Les tableaux ou les array, permettent donc de stocker plusieurs valeurs dans une seule variable. Imaginons avoir besoin de stocker une liste de villes. Si cette liste est très limitée, on pourrait stocker chaque ville dans une variable de la manière suivante :

PHP
<?php
   $ville1 = 'Fontainebleau';
   $ville2 = 'Paris';
   $ville3 = 'Lyon';
   echo $ville1.' - '.$ville2.' - '.$ville3;
?>
Résultat
Fontainebleau - Paris - Lyon

Cette solution fonctionne pour des volumes faibles mais est peu évolutive. En effet, si on souhaite ajouter une nouvelle ville, il sera nécessaire de créer une nouvelle variable. Le solution ultime ? Créer un tableau ou un array. La tension étant palpable depuis l'introduction, sans plus attendre, l'exemple d'un tableau en PHP.

PHP
<?php
   $villes = array('Fontainebleau', 'Paris', 'Lyon');
   echo $villes;
?>
Résultat
Array

La fonction array() permet de créer une variable de type array. Comme plus tôt dans le chapitre, nous pouvons matérialiser les instructions de l'exemple.

Clé Valeur
0 Fontainebleau
1 Paris
2 Lyon

Dans un tableau, chaque valeur est reliée par défaut à une clé ou à une key en anglais. En somme, un tableau est une suite d'associations de clés et de valeurs (key, value en anglais). Par défaut, les valeurs sont reliées à une clé numérique. On parle alors de tableau numéroté ou indexé, et en anglais de indexed array.

En PHP, un tableau numéroté commence toujours par la clé 0 !

Dans l'exemple ci-dessus, on cherche à afficher les valeurs de la variable $villes avec l'instruction echo. Malheureusement, on ne peut pas afficher les valeurs d'un array de cette manière. L'exemple ci-dessus le prouve bien, le résultat de l'instruction echo sur un tableau produit l'affichage Array, comme pour nous indiquer que ce n'est pas la bonne manière de procéder avec ce type de variable.

Afficher les valeurs d'un tableau en PHP

Méthode par défaut

Il existe plusieurs méthodes pour afficher les valeurs d'un tableau. Commençons par la méthode la plus simple. Conservons le même exemple que précédemment, à savoir un tableau numéroté. Chaque valeur possède une clé unique. Avec la syntaxe ci-dessous, on peut donc afficher la valeur d'une clé précise.

PHP
<?php
   $villes = array('Fontainebleau', 'Paris', 'Lyon');
   echo $villes[0].' - '.$villes[1].' - '.$villes[2];
?>
Résultat
Fontainebleau - Paris - Lyon

En précisant la clé souhaitée entre un crochet ouvrant et fermant à la suite de la variable de type array, on accède à la valeur. Cette solution fonctionne très bien si vous connaissez le nombre d'éléments que contient votre tableau ou que vous souhaitez afficher la valeur d'une clé précisément. Mais comment afficher tous les éléments d'un tableau sans connaître ses caractéristiques ? Une boucle pardi ! Et puis tant qu'à faire, autant utiliser celle dédiée à cet usage, la boucle foreach.

Méthode boucle foreach

La boucle foreach permet de parcourir simplement les tableaux. Elle ne fonctionne d'ailleurs qu'avec ce type de variable. Il existe deux syntaxes pour cette boucle.

PHP
<?php
   $villes = array('Fontainebleau', 'Paris', 'Lyon');
   foreach($villes as $key => $ville) {
      echo $ville.' a la clé '.$key.'<br />';
   }
?>
Résultat
Fontainebleau a la clé 0
Paris a la clé 1
Lyon a la clé 2
PHP
<?php
   $villes = array('Fontainebleau', 'Paris', 'Lyon');
   foreach($villes as $key => $ville) :
      echo $ville.' a la clé '.$key.'<br />';
   endforeach;
?>
Résultat
Fontainebleau a la clé 0
Paris a la clé 1
Lyon a la clé 2

Pour la boucle foreach, pas besoin de condition qui permet de stopper la boucle. En effet, cette dernière parcourt seulement tous les éléments du tableau. Elle commence donc au premier et s'arrête automatiquement après la lecture du dernier. On précise donc en premier lieu le tableau que l'on souhaite parcourir. Dans notre exemple, la variable $villes. À chaque itération de la boucle, la clé de l'élément parcouru est assignée dans la variable $key et la valeur de l'élément est assignée à la variable $ville.

Les tableaux associatifs

Nous avons pour le moment uniquement travaillé avec des tableaux numérotés. Les clés étaient numériques. Il existe un autre type de tableau où les clés sont des chaînes de caractères. On parle alors de tableau associatif et en anglais de associative array. Il y a deux solutions pour créer un tableau associatif.

PHP
<?php
   $villes = array(
      'Fontainebleau' => 77,
      'Paris' => 75,
      'Lyon' => 69
   );
?>
PHP
<?php
   $villes['Fontainebleau'] = 77;
   $villes['Paris'] = 75;
   $villes['Lyon'] = 69;
?>
 
 

Comme plus tôt dans le chapitre, nous pouvons également matérialiser le tableau associatif.

Clé Valeur
Fontainebleau 77
Paris 75
Lyon 69

La différence entre des tableaux numéroté et associatif se situe au niveau du type de la clé. Un tableau numéroté utilise des clés numériques, tandis qu'un tableau associatif utilise des chaînes de caractères.

Modifier un tableau

Vous êtes désormais en mesure de créer un tableau numéroté ou associatif. Dans cette partie, nous allons aborder la modification d'un tableau : ajout, modification et suppression.

Modifier un élément

Votre tableau est créé et vous souhaitez modifier un élément ? Pour un tableau numéroté ou associatif, la méthode est la même. Il suffit de suivre la syntaxe décrite dans les exemples ci-dessous.

PHP
<?php
   $villes = array('Fontainebleau', 'Paris', 'Lyon');
   $villes[0] = 'Melun';
   var_dump($villes);
?>
Résultat
array(3) { [0]=> string(5) "Melun" [1]=> string(5) "Paris" [2]=> string(4) "Lyon" }
PHP
<?php
   $villes = array('Fontainebleau' => 77, 'Paris' => 75, 'Lyon' => 69);
   $villes['Fontainebleau'] = 'Seine-et-Marne';
   var_dump($villes);
?>
Résultat
array(3) { ["Fontainebleau"]=> string(14) "Seine-et-Marne" ["Paris"]=> int(75) ["Lyon"]=> int(69) }

Ajouter un élément

Votre tableau est créé et vous souhaitez ajouter un élément supplémentaire ? Première solution, ajouter l'élément avec une clé précise dans le tableau.

PHP
<?php
   $villes = array('Fontainebleau', 'Paris', 'Lyon');
   $villes[9] = 'Nantes';
   var_dump($villes);
?>
Résultat
array(4) { [0]=> string(13) "Fontainebleau" [1]=> string(5) "Paris" [2]=> string(4) "Lyon" [9]=> string(6) "Nantes" }
PHP
<?php
   $villes = array('Fontainebleau' => 77, 'Paris' => 75, 'Lyon' => 69);
   $villes['Nantes'] = 44;
   var_dump($villes);
?>
Résultat
array(4) { ["Fontainebleau"]=> int(77) ["Paris"]=> int(75) ["Lyon"]=> int(69) ["Nantes"]=> int(44) }

Dans les deux exemples, nous avons inséré le nouvel élément avec la clé que nous souhaitions. Ce n'est pas toujours ce que l'on souhaite. En effet, nous ne connaissons pas toujours la taille du tableau et nous pouvons aisémement écraser une clé et une valeur déjà existante. Il existe donc un raccourci qui ajoute automatiquement une valeur avec une clé libre. Ce raccourci ajoute l'élément à la fin du tableau et cherche la plus petite clé numérique possible libre pour ajouter la valeur. Exemple :

PHP
<?php
   $villes = array('Fontainebleau', 'Paris', 'Lyon');
   $villes[] = 'Nantes';
   var_dump($villes);
?>
Résultat
array(4) { [0]=> string(13) "Fontainebleau" [1]=> string(5) "Paris" [2]=> string(4) "Lyon" [3]=> string(6) "Nantes" }
PHP
<?php
   $villes = array('Fontainebleau' => 77, 'Paris' => 75, 'Lyon' => 69);
   $villes[] = 44;
   var_dump($villes);
?>
Résultat
array(4) { ["Fontainebleau"]=> int(77) ["Paris"]=> int(75) ["Lyon"]=> int(69) [0]=> int(44) }

Dans l'exemple avec le tableau numéroté, la plus petite valeur possible à la fin du tableau est 3, car les clés 0, 1 et 2 sont déjà prises. Dans l'exemple avec le tableau associatif, le cas est un peu différent. En effet, le raccourci n'ajoute pas une chaîne de caractères aléatoires comme clé, mais cherche la clé numérique la plus petite possible de libre. En l'occurence, la clé 0 est disponible.

Supprimer un élément

Pour différentes raisons, on peut être amené à supprimer un élément d'un tableau. La fonction à utiliser pour cette action est unset(). Elle est très simple à utiliser. Elle permet également de supprimer complètement une variable.

PHP
<?php
   $villes = array('Fontainebleau' => 77, 'Paris' => 75, 'Lyon' => 69);
   $villes['Nantes'] = 44;
   unset($villes['Paris']);
   var_dump($villes);
?>
Résultat
array(3) { ["Fontainebleau"]=> int(77) ["Lyon"]=> int(69) ["Nantes"]=> int(44) }

Compter les éléments d'un tableau

Il peut être utile de compter le nombre d'éléments que contient un tableau. Pour répondre à ce besoin, il existe une fonction qui porte très bien son nom, count(). Elle s'utilise de la manière suivante :

PHP
<?php
   $villes = array('Fontainebleau', 'Paris', 'Lyon');
   $n_villes = count($villes);
   echo 'Il y a '.$n_villes.' éléments dans le tableau $villes.';
?>
Résultat
Il y a 3 éléments dans le tableau $villes.

Rechercher une valeur dans un tableau

La fonction in_array() permet de vérifier si une valeur existe dans une variable de type array, un tableau. Elle retourne TRUE si c'est le cas, et FALSE dans le cas inverse.

PHP
<?php
   $villes = array('Fontainebleau', 'Paris', 'Lyon');
   
   $ville_recherche = 'Paris';
   if(in_array($ville_recherche, $villes)) :
      echo 'Oui, la clé '.$ville_recherche.' existe dans le tableau $villes.';
   else :
      echo 'Non, la clé '.$ville_recherche.' n\'existe pas dans le tableau $villes.';
   endif;
?>
Résultat
Oui, la clé Paris existe dans le tableau $villes.

Rechercher une clé dans un tableau

La fonction array_key_exists() permet de vérifier si une clé existe dans un tableau. Elle retourne TRUE si c'est le cas, et FALSE dans le cas inverse.

PHP
<?php
   $villes = array(
      'Fontainebleau' => 77,
      'Paris' => 75,
      'Lyon' => 69
   );
   $ville_recherche = 'Marseille';
   
   if(array_key_exists($ville_recherche, $villes)) :
      echo 'Oui, la clé '.$ville_recherche.' existe dans le tableau $villes.';
   else :
      echo 'Non, la clé '.$ville_recherche.' n\'existe pas dans le tableau $villes.';
   endif;
?>
Résultat
Non, la clé Marseille n'existe pas dans le tableau $villes.

Conclusion

Illustration d'un développeur qui maîtrise les tableaux en PHP
Je suis le Picasso du PHP !

Vous êtes arrivé à la fin du chapitre ! Dans celui-ci, nous avons découvert les tableaux (array) en PHP. En PHP, il existe deux types de tableau : numéroté (indexé) et associatif. Les fonctionnalités autour de la manipulation des tableaux sont nombreuses. Des fonctions existent nativement pour répondre à des besoins très précis. Avant de se lancer dans un développement, n'hésitez pas à consulter la documentation officielle, pour peut-être trouver votre bonheur ?!