Temps de lecture approximative : 17 minutes
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 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
$ville = 'Fontainebleau';
echo $ville;
?>
Résultat
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
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
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.
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
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
.
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
$villes = array('Fontainebleau', 'Paris', 'Lyon');
foreach($villes as $key => $ville) {
echo $ville.' a la clé '.$key.'<br />';
}
?>
Résultat
<?php
$villes = array('Fontainebleau', 'Paris', 'Lyon');
foreach($villes as $key => $ville) :
echo $ville.' a la clé '.$key.'<br />';
endforeach;
?>
Résultat
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
.
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
$villes = array(
'Fontainebleau' => 77,
'Paris' => 75,
'Lyon' => 69
);
?>
<?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.
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.
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
$villes = array('Fontainebleau', 'Paris', 'Lyon');
$villes[0] = 'Melun';
var_dump($villes);
?>
Résultat
<?php
$villes = array('Fontainebleau' => 77, 'Paris' => 75, 'Lyon' => 69);
$villes['Fontainebleau'] = 'Seine-et-Marne';
var_dump($villes);
?>
Résultat
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
$villes = array('Fontainebleau', 'Paris', 'Lyon');
$villes[9] = 'Nantes';
var_dump($villes);
?>
Résultat
<?php
$villes = array('Fontainebleau' => 77, 'Paris' => 75, 'Lyon' => 69);
$villes['Nantes'] = 44;
var_dump($villes);
?>
Résultat
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
$villes = array('Fontainebleau', 'Paris', 'Lyon');
$villes[] = 'Nantes';
var_dump($villes);
?>
Résultat
<?php
$villes = array('Fontainebleau' => 77, 'Paris' => 75, 'Lyon' => 69);
$villes[] = 44;
var_dump($villes);
?>
Résultat
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.
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
$villes = array('Fontainebleau' => 77, 'Paris' => 75, 'Lyon' => 69);
$villes['Nantes'] = 44;
unset($villes['Paris']);
var_dump($villes);
?>
Résultat
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
$villes = array('Fontainebleau', 'Paris', 'Lyon');
$n_villes = count($villes);
echo 'Il y a '.$n_villes.' éléments dans le tableau $villes.';
?>
Résultat
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
$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
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
$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
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 ?!