Les tableaux (array) dans PHP sont en réalité bien plus que de simples tableaux. D'après la doc : “Ce type est optimisé pour différentes utilisations ; il peut être considéré comme un tableau, une liste, une table de hachage, un dictionnaire, une collection, une pile, une file d'attente et probablement plus.”

Les tableaux dans PHP servent donc à tout et en conséquence on les utilise dans tous les scripts, soit de façon voulue par notre code, soit de façon imposée par PHP (cf les superglobales $_POST, $_GET, etc).

La création des tableaux est on ne peut plus simple, leur flexibilité est immense et PHP offre de nombreuses fonctions pour travailler avec des tableaux.

Un tableau est une struture de données contenant un certain nombre d'éléments. Chaque élément a une valeur et est situé à un indice. On peut voir un élément d'un tableau comme une valeur associée à un indice (ou à une clé). La taille d'un tableau est égal au nombre d'éléments qu'il contient.

Dans un tableau, il ne peut pas y avoir 2 éléments avec le même indice (ou la même clé) : on dit que l'indice ou la clé est "unique".

Les taille d'un tableau PHP n'est pas fixée à l'avance : on peut ajouter ou retirer des éléments à tout moment : les tableaux PHP sont dynamiques.

PHP supporte deux types de tableaux : à indices numériques et associatif :

Les valeurs des éléments d'un tableau peuvent être de n'importe quel type.

Des valeurs de types différents peuvent être stockés dans le même tableau.

En interne, PHP stocke tous les tableaux sous la forme de tableaux associatifs.
C'est au développeur de choisir les bonnes fonctions pour traiter soit un tableau à indices numériques, soit un tableau associatif.
Les fonctions traitant les tableaux à indices numériques reposent sur la régle suivante : tous les indices du tableau sont des entiers consécutifs commençant à 0.
Les éléments d'un tableau associatif sont triés suivant l'ordre d'insertion des éléments.
On peut créer des tableaux "mixtes" dont les clés peuvent être numériques et / ou alphabétiques. Dans ce cas, il faut utiliser pour le traitement les fonctions dédiées aux tableaux associatifs.

Tableaux à indices numériques

On peut créer un tableau à indices numériques en affectant directement des valeurs à une variable en utilisant la notation à crochet.

Exemple : création d'un tableau à indices numériques

Le code de l'exemple précédent va créer la variable $t de type tableau, car on utilise la notation à crochet au moment de la première affectation d'une valeur à cette variable (ligne 7). Comme on ne précise pas d'indice dans l'affectation, PHP va automatiquement affecter la première valeur à l'indice 0. A la ligne suivante, comme on ne précise pas non plus d'indice dans l'affectation, PHP va automatiquement affecter la valeur à l'indice le plus grand déjà utilisé (ici 0) + 1, soit ici l'indice 1. Etc, etc.

La numérotation des indices peut ne pas commencer à 0.

Exemple : création d'un tableau à indices numériques

Les valeurs des indices peuvent ne pas être consécutives.

Exemple : création d'un tableau à indices numériques

Attention aux trous dans les tableaux à indices numériques.

Si dans un tableau à indices numériques, les indices ne sont pas consécutifs, PHP ne comblera pas automatiquement les trous. Cela peut parfois poser des problèmes dans les itérations à travers ce type de tableau, comme le montre l'exemple suivant :

Exemple : tableau à trous

On a ici 2 problèmes :

La solution pour faire des itérations dans les éléments d'un tel tableau est d'utiliser une instruction foreachà la place de l'instruction for.

Exemple : tableau à trous

La fonction isset() permet de déterminer si une variable est définie ET est différente de NULL. Elle renvoie alors TRUE. Sinon, elle renvoie FALSE.
On peut l'utiliser pour savoir si une clé existe dans un tableau.

Exemple : savoir si une clé existe

Tableaux associatifs

Dans un tableau associatif, les clés des éléments sont des chaines de caractères . Ce type de tableau est aussi appelé table de hachage, dictionnaire, table de symboles, map, ... Il est extrêment utilisé dans PHP.

Exemple : création d'un tableau associatif

Bien sûr avec un tel tableau, une boucle for est impossible. Il faut utiliser l'instruction foreach dans une ou l'autre de ses formes :

foreach ($t as $val)
ou 
foreach ($t as $cle => $val)

Dans la 1ere forme, $t représente le tableau sur lequel on veut itérer, et $val est une variable dans laquelle nous aurons la valeur de l'élément en cours dans la boucle.

Dans la 2eme forme, $t représente le tableau sur lequel on veut itérer, $cle est une variable dans laquelle nous aurons la valeur de la clé en cours, et $val est une variable dans laquelle nous aurons la valeur de l'élément en cours dans la boucle.

Exemple : boucle foreach