Apprendre à coder sur pierre-giraud.com

DES COURS COMPLETS ET GRATUITS POUR TOUS

TABLEAUX MULTIDIMENSIONNELS ET AFFICHAGE RAPIDE DE TABLEAUX EN PHP

Les tableaux multidimensionnels PHP – principe

Un tableau multidimensionnel est un tableau contenant lui même un ou plusieurs autres tableaux en valeurs.

Nous allons pouvoir avoir plusieurs « dimensions » de tableaux multidimensionnels.

On appelle tableau à deux dimensions un tableau contenant lui même un ou plusieurs autres tableaux.

On appelle tableau à trois dimensions un tableau contenant un ou plusieurs tableaux contenant eux mêmes un ou plusieurs tableaux.

Le PHP sait tout à fait travailler avec des tableaux à 2, 3, 4, 5 dimensions et même plus. Cependant, il est conseillé de ne pas stocker trop de tableaux dans d’autres, tout simplement car à partir d’un moment cela devient incompréhensible.

Notez que le nombre de dimensions d’un tableau va indiquer le nombre d’indices nécessaires pour accéder à une valeur. Nous allons expliquer cela immédiatement.

Création d’un tableau PHP à deux dimensions

Créons un premier tableau à deux dimensions.

Pour rappel, un tableau à deux dimensions est un tableau contenant lui même un ou plusieurs tableaux en valeurs.

Création d’un tableau PHP à deux dimensions

Ici, notre tableau $inscrits est un tableau à deux dimensions : il contient lui même trois autres tableaux qui ne contiennent que des valeurs simples.

Notez que chaque "sous" tableau est également avant tout une valeur du tableau $inscrits, il faut donc les séparer par une virgule.

Dans notre exemple, nous avons écrit les différents tableaux sur des lignes différentes pour une meilleure visibilité.

Vous pouvez également noter que je n'ai créé ici que des tableaux numérotés pour simplifier la création et les explications et qu'on puisse se concentrer complètement sur l'aspect multidimensionnel de notre tableau.

Passons immédiatement aux choses intéressantes et interrogeons nous sur la façon de récupérer les différentes valeurs des trois tableaux contenus dans $inscrits.

Représentation visuelle d’un tableau multidimensionnels

Essayons de rendre le problème visuel en se représentant le contenu d’une variable tableau sous forme de « tableau » tel qu’on le conçoit dans la vie de tous les jours.

Vous pouvez vous représenter une variable tableau PHP « simple » sous forme d’un tableau ne contenant qu’une seule colonne et autant de lignes qu’il y a d’éléments dans votre tableau.

Ainsi, dans le cas d’un tableau numéroté, la clef 0 permet d’accéder à la valeur située dans la cellule en première ligne, la clef 1 permet d’accéder à la valeur située dans la cellule en ligne 2, etc.

Prenons l’exemple d’un tableau PHP simple $membre :

Un tableau numéroté à une dimension en PHP

Voici la représentation visuelle que l’on peut s’en faire :

Représentation visuelle d’un tableau numéroté à une dimension en PHP

Dans ce cas, les valeurs de notre tableau n’occupent bien qu’une colonne et on y accède grâce à une clef qui correspond à la ligne (moins un car la première valeur possède la clef 0).

Ici, j'ai rajouté une deuxième colonne contenant les clefs du tableau afin que vous compreniez bien, mais les valeurs du tableau en soi n'occupent bien qu'une seule colonne (la colonne valeur et la colonne clef ne devraient former qu'une seule colonne pour être tout à fait précis).

Dans le cas d’un tableau à deux dimensions, cependant, cela va être un peu plus complexe car notre tableau contient alors d’autres tableaux qui contiennent eux mêmes des valeurs.

Il faut alors s’imaginer que chaque tableau contenu dans notre tableau va occuper une ligne, et que chacune des valeurs de ces tableaux va occuper une colonne.

En reprenant notre tableau à deux dimensions $inscrits, on peut alors se faire la représentation visuelle suivante :

Un tableau à deux dimensions en PHP

Représentation visuelle d’un tableau à deux dimensions en PHP

Comme vous pouvez le voir, la valeur "Pierre" qui est la première valeur du premier tableau contenu dans $inscrits est située en première ligne, première colonne dans notre représentation visuelle.

La valeur "25" qui est la deuxième valeur du premier tableau contenu dans $inscrits est située en première ligne, deuxième colonne.

La valeur "Paul" qui est la première valeur du deuxième tableau contenu dans $inscrits est située en deuxième ligne, première colonne.

Cela n’est qu’une représentation visuelle mais devrait beaucoup vous aider pour sélectionner les valeurs d’un tableau à plusieurs dimensions par la suite.

Récupérer des valeurs dans un tableau à deux dimensions

Pour récupérer une valeur dans un tableau à une dimension, il suffisait d’indiquer une clef qui représentait finalement la "ligne" (de notre représentation visuelle) où était située la valeur en question (la clef 0 représente la première ligne, etc.).

Pour récupérer une valeur dans un tableau à deux dimensions, nous allons procéder exactement de la même façon à part que cette fois-ci nous allons devoir préciser deux clefs représentant la ligne et la colonne dans lesquelles se situe la valeur à récupérer.

Par exemple, si je veux récupérer la deuxième valeur du premier tableau contenu dans $inscrits, j’indiquerai $inscrits[0][1]. La valeur 0 représente la première ligne, c’est-à-dire la ligne où se situent toutes les valeurs du premier sous tableau contenu dans $inscrits et 1 représente la deuxième colonne ; la colonne où se situe la valeur "25" en particulier.

Récupérer une valeur dans un tableau à deux dimensions en PHP

On doit préciser deux indices pour récupérer une valeur dans un tableau PHP à deux dimensions

Je suppose qu’avec cet exemple vous avez compris comment ça fonctionnait. Evidemment, dans le cas d’un tableau à trois dimensions, il faudra préciser trois indices pour récupérer une valeur et etc.

Récupérer toutes les valeurs d’un tableau à deux dimensions

Pour récupérer toutes les valeurs d’un tableau à deux dimensions d’un coup, nous allons par exemple pouvoir utiliser deux boucles for imbriquées l'une dans l'autre.

La première boucle for va passer en revue les valeurs de notre tableau à deux dimensions, c’est-à-dire les « sous tableaux » tandis que la deuxième boucle for va aller récupérer les valeurs de chaque sous tableau en soi.

Voyons en pratique comment cela va fonctionner :

Création de deux boucles for pour lire les valeurs d'un tableau PHP à deux dimensions

On crée une boucle for dans une autre afin de récupérer toutes les valeurs d'un tableau à deux dimensions en PHP

Pas de panique, vous êtes tout à fait capable de comprendre ce code !

La première boucle for va boucler sur les valeurs de notre tableau principal (c'est à dire sur nos sous tableaux) et va contenir une deuxième boucle qui va boucler sur les valeurs de chaque sous tableau.

Pour notre première boucle for, on utilise une variable $ligne dont on va se resservir pour définir notre premier index (regardez la ligne $inscrits[$ligne][$col]).

Cette variable $ligne va nous servir à cibler nos lignes, ou nos sous tableaux si vous préférez. Comme on a trois sous tableaux, on boucle sur les valeurs 0, 1 et 2.

Lors du premier passage dans la première boucle for, $ligne vaut 0. On echo "Membre n°1" et on ouvre un élément ul.

Toujours dans ce premier tour de boucle, on rentre dans notre deuxième boucle for qui va elle boucler sur une variable $col qui va représenter les valeurs de nos tableaux.

Comme on a également trois valeurs dans chaque sous tableau, on veut boucler pour $col compris entre 0 et 2.

Lors du premier tour dans cette deuxième boucle, on a donc $ligne = 0 et $col = 0.

On echo la valeur correspondant à $inscrits[0][0] à l’intérieur d’un premier élément de liste li.

Ensuite, on effectue un second tour dans notre deuxième boucle. Notre variable $ligne vaut toujours 0 car vous devez bien comprendre qu’on est toujours dans le premier tour de notre première boucle (on n’effectuera un deuxième tour dans notre première boucle qu’une fois sorti de la deuxième boucle qui est contenue dans cette première).

Lors de ce second tour dans la deuxième boucle, on a donc $ligne = 0 et $col = 1. On affiche la valeur correspondant à $inscrits[0][1] dans un nouvel élément de liste li.

On effectue un troisième tour dans notre deuxième boucle de la même façon puis on sort enfin de cette boucle.

Lorsqu’on sort de la deuxième boucle, on echo une balise fermante pour notre liste ul et on repart pour un deuxième tour dans notre première boucle.

Lors de ce deuxième tour, $ligne vaut 1 et on rentre à nouveau dans la deuxième boucle. On a donc d’abord $ligne = 1 et $col = 0 ; on echo $inscrits[1][0] et on repart pour un second tour dans notre deuxième boucle et etc. jusqu’à sortir de notre première boucle après le troisième tour de boucle.

Faites l’effort de réfléchir sur ce code : je vous promets que ce n’est pas très compliqué si on prend le temps de comprendre ce qu’il se passe et qu’on reste méthodique.

Afficher rapidement un tableau avec la fonction PHP print_r()

On va également pouvoir afficher n’importe quel type de tableau (numéroté, associatif, multidimensionnel) rapidement avec la fonction PHP print_r().

Cette fonction n’est pas utilisée pour un affichage final pour les visiteurs mais généralement pour le débogage car l’affichage va montrer tout le code sans aucune mise en forme.

Comme elle peut s’avérer intéressante pour nous, développeurs, je tenais à vous la présenter.

On va généralement utiliser cette fonction avec l’élément HTML pre pour avoir un meilleur affichage du tableau que l’on souhaite afficher (je vous rappelle que pre va permettre deconserver la mise en forme de notre code).

La fonction PHP print_r() va prendre en argument le tableau que l’on souhaite afficher.

Utilisation de la fonction PHP print_r() pour afficher rapidement un tableau

On utilise la fonction PHP print_r() avec l’élément pre pour voir le contenu de notre tableau simplement

Voilà tout pour la création et l’affichage de tableaux (pour le moment !).

Chapitre précédent

Chapitre suivant