6.Le langage PHP

6.5.Les tableaux (array) en PHP

6.5.1.Introduction

Afin de manipuler une liste (ordonnée) de valeurs vous disposer du type tableau (ou en anglais array). Nous vous indiquons dans ce chapitre comment les initialiser et comment les parcourir.
En bref:
  • $tableau = []; pour initialiser un tableau vide avec PHP>=5.4.0
  • $tableau = ['élément1', 'élément2']; pour initialiser un tableau indexé avec PHP>=5.4.0
  • $tableau = ['clé1' => 'élément1', 'clé2' => 'élément2']; pour initialiser un tableau associatif avec PHP>=5.4.0
  • $tableau = array(); pour initialiser un tableau vide quelque soit la version de PHP
  • $tableau = array('élément1', 'élément2'); pour initialiser un tableau indexé quelque soit la version de PHP
  • $tableau = array('clé1' => 'élément1', 'clé2' => 'élément2'); pour initialiser un tableau associatif quelque soit la version de PHP
  • Le premier index d'un tableau indexé est 0
  • Pour atteindre un élément d'un tableau il suffit de préciser son index ou le nom de la clé entre crochet $tableau[$cle]
  • Un tableau indexé peut être parcouru par for ($i=0; $i<count($tableau); $i++) {$tableau[$i]}
  • Quelque soit le type de tableau, il peut être parcouru par foreach ($tableau as $cle => $valeur) {...}
Les fonctions de manipulation de tableaux font quant à elles l'objet d'un autre chapitre[où?]

6.5.2.Initialisation

Un tableau (vide) peut être initialisé de la façon suivante
<?php
$tableau = [];
?>
Depuis PHP 5.4.0, il est en effet possible d'utiliser la notation dite courte, en utilisant les crochets [] plutôt que le mot clé array().
<?php
$tableau = array();
?>
Il peut ensuite être rempli comme suit
<?php
$tableau[] = 'valeur1';
$tableau[] = 'valeur2';
$tableau[] = 'valeur3';
?>
Les valeurs contenues dans le tableau peuvent être de tout type (chaîne de caractères, entier, tableau, objet, etc.).

6.5.3.Tableau indexé

Dans l'exemple précédent, nous avons construit un tableau dans lequel chaque élément est repéré (automatiquement) par un indice numérique. On parle de tableau indexé. Le premier indice du tableau est alors 0 (chaque nouvel ajout est associé à l'indice immédiatement supérieur au plus grand indice déjà utilisé). Ainsi, l'élément du tableau associé à l'indice 0 contient la valeur 'valeur1' (et les suivants 1, 2, etc.) et peut être affiché ou modifié comme cela
<?php
echo $tableau[0];
$tableau[0] = 'nouvelle valeur 1';
?>
Si le contenu attendu du tableau est connu au moment de l'initialisation vous pouvez le construire directement par
<?php
$tableau = ['valeur1', 'valeur2', 'valeur3'];
?>
<?php
$tableau = array('valeur1', 'valeur2', 'valeur3');
?>

6.5.4.Tableau associatif

Les tableaux peuvent également comporter des indices sous forme de texte. On parle alors de tableau associatif. A un terme est associée une valeur comme dans les exemples suivants:
<?php
$tableau = array();
$tableau['nom'] = 'dupont';
$tableau['prenom'] = 'jean';
?>
<?php
$tableau = ['nom' => 'dupont', 'prenom' => 'jean'];
?>
<?php
$tableau = array('nom' => 'dupont', 'prenom' => 'jean');
?>

6.5.5.Tableau indexé et associatif

Il est tout à fait possible de mixer les 2 types d'index (et de préciser ou pas l'index numérique):
<?php
$tableau = [];
$tableau[] = 'index 0';
$tableau['prenom'] = 'index prenom';
$tableau[2] = 'index 2';
$tableau[] = 'index 3';
$tableau['nom'] = 'index nom';
?>
<?php
$tableau = ['index 0', 'prenom' => 'index prenom', 2 => 'index 2',
            'index3', 'index nom'];
?>
<?php
$tableau = array();
$tableau[] = 'index 0';
$tableau['prenom'] = 'index prenom';
$tableau[2] = 'index 2';
$tableau[] = 'index 3';
$tableau['nom'] = 'index nom';
?>
<?php
$tableau = array('index 0', 'prenom' => 'index prenom', 2 => 'index 2',
                 'index3', 'index nom');
?>

6.5.6.Lister les éléments d'un tableau

Il existe moult façons de parcourir le contenu d'un tableau, nous vous présentons ici les plus fréquentes.
Si votre tableau contient 10 éléments numérotés de 0 à 9 vous pouvez en afficher le contenu par
<?php
for ($i=0; $i<10; $i++) {
    echo $tableau[$i].' '; // Avec insertion d'un espace entre 2 valeurs
}
?>
Il se trouve qu'en pratique, pour parcourir l'ensemble du tableau, vous n'indiquerez pas en dur la taille du tableau mais vous ferez appel à la fonction count() qui vous indiquera le nombre d'éléments dans le tableau. Ce qui donne en fait:
<?php
for ($i=0; $i<count($tableau); $i++) {
    echo $tableau[$i].' '; // Avec insertion d'un espace entre 2 valeurs
}
?>
rem
  • Notez bien que cette façon de faire n'est valable que si le tableau n'est constitué que d'index numériques entre 0 et le dernier élément du tableau.
Si votre tableau n'est pas purement indexé, alors vous aurez tout intérêt à opter pour la méthode suivante
<?php
foreach ($tableau as $valeur) {
    echo $valeur.' '; // Avec insertion d'un espace entre 2 valeurs
}
?>
et si vous souhaitez connaître l'indice (ou la clé) associée à chaque valeur pour pouvez modifier légèrement le code en
<?php
foreach ($tableau as $cle => $valeur) {
    echo $valeur.' '; // Avec insertion d'un espace entre 2 valeurs
    // la cle associée à cette valeur est $cle
}
?>
Ici vous pouvez apprendre :
Version imprimable: imprimer