Menu

Tableaux multidimensionnels PHP : imbrication et boucles

Un tableau multidimensionnel en PHP est un tableau dont les éléments sont des tableaux, lu avec une paire de crochets par niveau : $grid[1][2] ou $users[0]['name']. Créer des tableaux imbriqués, lire et modifier des valeurs profondes, boucler avec des foreach imbriqués, construire un tableau HTML, extraire une colonne et trier des lignes.

Cette page contient des éditeurs exécutables - modifiez, exécutez et voyez la sortie instantanément.

Un tableau multidimensionnel est un tableau dont les éléments sont des tableaux. Vous le lisez avec une paire de crochets par niveau : $grid[1][2] est la ligne 1, colonne 2, et $users[0]['name'] est le nom du premier enregistrement.

La seconde forme, une liste d'enregistrements aux champs nommés, est celle que vous rencontrerez le plus : c'est ce que vous donnent en général une requête en base de données, une réponse JSON décodée ou un fichier CSV analysé. Chaque enregistrement est un tableau associatif.

Créer des tableaux imbriqués

L'imbrication peut aller aussi loin que nécessaire, et les niveaux peuvent mélanger clés numériques et clés de type chaîne. Un tableau de configuration en est un exemple courant : des sections nommées, chacune contenant des réglages ou des listes.

Ajouter des lignes et des valeurs imbriquées

$rows[] = [...] ajoute une ligne entière. $arr['key'][] = $value ajoute dans une liste imbriquée, et PHP crée le tableau intérieur la première fois, donc regrouper des valeurs ne demande aucune préparation.

Parcourir un tableau multidimensionnel

Utilisez un foreach par niveau. Pour une liste d'enregistrements, une boucle suffit en général car vous lisez les champs par leur nom. Pour une grille, la boucle intérieure parcourt les cellules de chaque ligne.

Construire un tableau HTML à partir d'un tableau

Un tableau de lignes correspond directement à un tableau HTML : les clés de la première ligne deviennent l'en-tête, et chaque ligne devient un <tr>. Exécutez-le et l'onglet Page affiche le tableau rendu ; modifiez une valeur ou ajoutez une ligne et relancez.

La forme foreach (...): ... endforeach; est la même boucle écrite pour les templates, ce qui garde le HTML lisible.

Extraire une colonne de toutes les lignes

array_column() extrait un champ de chaque ligne dans une liste à plat. Passez un troisième argument pour indexer le résultat par un autre champ, ce qui transforme une liste d'enregistrements en table de correspondance.

Trier des lignes par un champ

usort() trie les lignes avec une fonction de comparaison. L'opérateur spaceship <=> renvoie -1, 0 ou 1, exactement ce qu'attend usort(). Échangez $a et $b pour trier dans l'ordre décroissant.

count($players, COUNT_RECURSIVE) compte les 3 lignes plus les 6 champs qu'elles contiennent, c'est pourquoi il affiche 9.

Erreur fréquente : lire une clé profonde qui manque peut-être

Lire $config['cache']['ttl'] quand il n'y a pas de clé cache affiche Warning: Undefined array key "cache", suivi de Warning: Trying to access array offset on null pour le niveau suivant. L'opérateur ?? vérifie toute la chaîne d'un coup et n'affiche jamais de warning, c'est donc la façon sûre de lire des valeurs imbriquées facultatives.

Questions fréquentes

Comment accéder à une valeur d'un tableau multidimensionnel en PHP ?

Ajoutez une paire de crochets par niveau : $matrix[1][0] est la ligne 1, colonne 0, et $users[0]['email'] est l'email du premier utilisateur. Chaque crochet lit dans le tableau renvoyé par le précédent.

Comment parcourir un tableau multidimensionnel en PHP ?

Imbriquez un foreach par niveau : foreach ($rows as $row) { foreach ($row as $key => $value) { ... } }. Pour un tableau d'enregistrements, une seule boucle suffit en général, et vous lisez les champs par leur nom : $row['name'].

Comment ajouter un élément à un tableau multidimensionnel ?

Ajoutez une ligne entière avec $rows[] = ['name' => 'Linus', 'age' => 54];, ou ajoutez dans un tableau imbriqué avec $groups['admins'][] = 'Grace';. PHP crée le tableau intérieur si la clé n'existe pas encore.

Comment créer un tableau 2D rempli de zéros en PHP ?

Imbriquez deux appels à array_fill() : $grid = array_fill(0, 3, array_fill(0, 4, 0)); donne 3 lignes de 4 zéros. Chaque ligne est sa propre copie, donc $grid[0][0] = 5; ne modifie que la première ligne.

Illustration des langages de programmation de Coddy

Apprendre à coder avec Coddy

COMMENCER