COURS PHP

  Dernière mise à jour effectuée le : Vendredi 15 août 2003    

Accueil | Afficher le contenu d'un tableau

Afficher le contenu d'un tableau
On est très, très souvent (surtout avec PHP qui en est très friand) amené à travailler avec des tableaux. Et parfois, on aimerait bien savoir ce qu'il y a dans tel ou tel tableau à un moment donné de l'exécution de notre programme. Soit par curiosité, soit (et c'est plus fréquent comme bonne raison) parce qu'on s'est lamentablement planté dans notre programme. Heureusement, il existe plusieurs fonctions bien utiles.

 


print_r()

La fonction print_r() affiche le contenu d'une variable en général. Lorsqu'il s'agit d'une bête variable, elle affiche son contenu, tout bêtement, mais quand il s'agit d'un tableau, elle affiche sous une forme plus ou moins lisible le contenu de chaque poste du tableau avec ses indices ou ses clés (les étiquettes des casiers, pour les tableaux associatifs).
Le résultat s'affiche tout seul à l'écran.
Prenons un exemple. Vous vous souvenez de notre tableau des jours en Anglais et de leur équivalent en Français ? Il était de la forme :

$JourSemaine = array("Monday" => "Lundi", "Tuesday" => "Mardi", "Wednesday" => "Mercredi", "Thursday" => "Jeudi", "Friday" => "Vendredi", "Saturday" => "Samedi", "Sunday" => "Dimanche") ;

La fonction print_r() appliquée à ce tableau s'écrit :

print_r($JourSemaine) ;

et donne le résultat suivant à l'écran :

Array ( [Monday] => Lundi [Tuesday] => Mardi [Wednesday] => Mercredi [Thursday] => Jeudi [Friday] => Vendredi [Saturday] => Samedi [Sunday] => Dimanche )

"Array", en tête, signifie que c'est un tableau. Puis vous reconnaissez les clés (étiquettes des casiers) entre crochets, suivi du signe "=>" puis de la valeur contenue dans le poste correspondant à la clé du tableau.

Pour un tableau indexé comme notre fameux "$MeubleClassique" qui est de la forme suivante :

$MeubleClassique = array("Mozart", "Chopin", "Haendel", "Bach", "Lully", "Gounod", "Schubert", "Brahms", "Verdi", "Wagner") ;

le résultat de l'instruction print_r($MeubleClassique) ; donne :

Array ( [0] => Mozart [1] => Chopin [2] => Haendel [3] => Bach [4] => Lully [5] => Gounod [6] => Schubert [7] => Brahms [8] => Verdi [9] => Wagner )

Cette représentation n'est pas très lisible. Mais, si vous allez dans le code source de la page qui affiche ça à l'écran, vous avez une représentation beaucoup plus lisible et qui est :

Array
(
    [0] => Mozart
    [1] => Chopin
    [2] => Haendel
    [3] => Bach
    [4] => Lully
    [5] => Gounod
    [6] => Schubert
    [7] => Brahms
    [8] => Verdi
    [9] => Wagner
)

Déjà beaucoup plus exploitable pour nous, pauvres humains.
Vous voyez que les clés (étiquettes) des postes (casiers) sont des chiffres.

En fait, les index et les clés, c'est du pareil au même. Les index (indices numériques) ne sont que des clés numériques du type "entiers". En ce qui concerne le mode de gestion qu'en fait PHP, c'est strictement pareil.

Une autre astuce consiste à inclure votre code PHP dans une page HTML et à encadrer votre instruction print_r($MeubleClassique) ; par les balises <pre> et </pre>. Votre programme devient alors :

<html>
<head>
<title></title>
</head><body>

<pre>
<?php
print_r($MeubleClassique) ;
?>
</pre>
</body>
</html>

et le résultat donne directement à l'écran (sans aller dans le code source de la page) :

Array
(
    [0] => Mozart
    [1] => Chopin
    [2] => Haendel
    [3] => Bach
    [4] => Lully
    [5] => Gounod
    [6] => Schubert
    [7] => Brahms
    [8] => Verdi
    [9] => Wagner
)

 

 



var_dump()

Sa syntaxe générale est de la forme :

var_dump($UnTableau) ;

C'est comme pour print_r(). Il suffit de mettre le nom du tableau dont on veut afficher le contenu à l'intérieur des parenthèses de la fonction. On dit que l'on "passe" le tableau en "argument" à la fonction.

Par contre, le résultat est sensiblement différent. Si nous reprenons nos deux exemples des jours et des disques classiques, nous aurons respectivement pour les jours :

var_dump($JourSemaine) ;

qui donne comme résultat

array(7) { ["Monday"]=> string(5) "Lundi" ["Tuesday"]=> string(5) "Mardi" ["Wednesday"]=> string(8) "Mercredi" ["Thursday"]=> string(5) "Jeudi" ["Friday"]=> string(8) "Vendredi" ["Saturday"]=> string(6) "Samedi" ["Sunday"]=> string(8) "Dimanche" }

où vous voyez qu'il y a plus de renseignements sur chaque poste du tableau. Ce sont :
"array(7)" veut dire que c'est un tableau qui comporte 7 postes.
Puis, entre accolades, vous avez le contenu de chaque poste avec : ["Monday"]=> string(5) "Lundi" par exemple, qui signifie que vous avez un poste dont la clé est "Monday" dont le contenu est une chaîne de caractères (string), que cette chaîne de caractères comporte 5 caractères, et que cette chaîne c'est "Lundi".
Vous voyez que c'est la même chose que la fonction print_r() mais avec plus de renseignements sur le contenu.
Ca peut être parfois bien utile.

Pour notre fameux $MeubleClassique, l'instruction est

var_dump($MeubleClassique) ;

et donne le résultat :

array(10) { [0]=> string(6) "Mozart" [1]=> string(6) "Chopin" [2]=> string(7) "Haendel" [3]=> string(4) "Bach" [4]=> string(5) "Lully" [5]=> string(6) "Gounod" [6]=> string(8) "Schubert" [7]=> string(6) "Brahms" [8]=> string(5) "Verdi" [9]=> string(6) "Wagner" }

Là encore, les clés sont des valeurs numériques entières.
Dans le code source qui affiche ça à l'écran, ou en encadrant votre instruction par les balises HTML <pre> et </pre> vous aurez :

array(10) {
  [0]=>
  string(6) "Mozart"
  [1]=>
  string(6) "Chopin"
  [2]=>
  string(7) "Haendel"
  [3]=>
  string(4) "Bach"
  [4]=>
  string(5) "Lully"
  [5]=>
  string(6) "Gounod"
  [6]=>
  string(8) "Schubert"
  [7]=>
  string(6) "Brahms"
  [8]=>
  string(5) "Verdi"
  [9]=>
  string(6) "Wagner"
}

 



implode() ou join()

En fait, join() est ce que l'on appelle un "alias" de implode(). Ca veut dire que c'est la même chose. Deux expressions pour faire pareil quoi.

Par contre, le résultat n'est pas tout à fait le même. La syntaxe générale est la suivante :

implode("UnSeparateur", $UnTableau) ;

Ces instructions n'affichent rien elles mêmes à l'écran. Il faut leur dire de s'afficher. On écrit, avec nos deux exemples :

echo implode(", ", $JourSemaine) ;

où ", " est le séparateur que l'on veut voir apparaître entre le contenu de chaque casier de notre tableau. DAns ce cas, ça donne comme résultat :

Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche

Avec l'autre tableau, on écrira :

echo implode(", ", $MeubleClassique) ;

et on obtiendra :

Mozart, Chopin, Haendel, Bach, Lully, Gounod, Schubert, Brahms, Verdi, Wagner

Vous voyez que c'est très dépouillé. On n'a que les valeurs contenues dans chaque poste du tableau, sans autre précision.
Le séparateur peut être n'importe quelle chaîne de caractères valide à l'affichage écran. Par exemple, pour afficher une valeur par ligne au lieu d'avoir tout sur la même ligne, on n'aura qu'à utiliser comme séparateur, la chaîne de caractères "<br>" qui représente un passage à la ligne en HTML. L'instruction devient alors :

echo implode("<br> ", $MeubleClassique) ;

et le résultat est :

Mozart
Chopin
Haendel
Bach
Lully
Gounod
Schubert
Brahms
Verdi
Wagner

Remplacer implode par join donne exactement le même résultat. Mais implode est plus PHP alors que join est aussi utilisé en JavaScript.

 



Ce cours est enseigné par Philippe Médan 
dans le cadre de la formation des professionnels de l'INTERNET.
au CREFAC , 14 rue Scandicci, 93000 Pantin. Tél. : 01 48 46 51 99
au GITA-GRETA , Lycée Technologique Diderot 61, rue David D'Angers 75019 Paris Tél. : 01 40 40 36 27
au CESI à l'Ecole des ingénieurs, 116 Av Aristide Briand, BP 57, 92224 Bagneux CEDEX Tél. : 01 45 36 70 00

© Philippe Médan 1999-2003. Tous droits de reproduction réservés pour tous pays.