Les tableaux indexés à une dimension (vecteurs)
En règle générale, pour tous
les langages informatiques, on parle de "tables" pour parler
des variables de type "tables", vecteurs ou autre. En PHP, comme
il y a une liaison possible avec des bases de données, et que dans
les bases de données, on parle de "tables" dans un sens
différent de celui dont il s'agit ici, je préfère
parler de tableaux pour parler des variables de type "table"
du langage PHP, de manière à éviter toute confusion. |
Vous vous souvenez des variables ? Vous savez, ces zones de mémoire, comme des casiers dans lesquels on range les données dont on a besoin. Une variable, est unique, et ne peut contenir qu'une seule donnée. Pour celles et ceux qui ne s'en souviennent plus, allez réviser Les variables. Hé bien un Vecteur (ou tableau à une dimension), n'est rien d'autre qu'une variable, mais à l'intérieur de laquelle on peut ranger plusieurs données. Autant que l'on veut (à peu de chose près) et ce qu'il y a de merveilleux avec PHP, c'est qu'elles ne doivent pas forcément être du même type. En effet, on peut mélanger allègrement tous les types de données dans un tableau PHP. C'est génial, mais parfois dangereux si l'on est pas très attentif à ce que l'on fait. Alors qu'est-ce que c'est ? Imaginez un de ces petits meubles pour ranger les CD Audios. Ils sont longs, tout en hauteur, et il y a une case pour chaque CD Audio. Imaginez alors que vous colliez une petite étiquette sur chaque emplacement de rangement, devant chaque CD Audio. Une étiquette sur laquelle vous inscririez un numéro, histoire de pouvoir repérer un CD Audio en particulier. Ainsi, si vous voulez qu'on aille en chercher un dont vous ne vous souvenez plus du titre, vous diriez : "Vas me chercher le CD Audio N° x", et il n'y aurait pas confusion possible, vu qu'il ne peut y avoir qu'un seul CD Audio par emplacement de rangement. Hé bien un vecteur (tableau) PHP, c'est exactement ça. A un détail près, c'est que nous, nous commencerions à numéroter les emplacements à partir de "1", et que PHP lui, commence à numéroter les emplacements à partir de "0". Le meuble de rangement est la variable indexée que nous appelons un"tableau" ou vecteur puisqu'il n'a qu'une seule dimension (un seul meuble avec tous les disques rangés de haut en bas, sur une seule colonne). Si vous aviez plusieurs de ces meubles de rangement de CD Audio, vous donneriez un nom à chaque meuble pour dire "vas me chercher le CD Audio N0 x dans le meuble "Machin". Chaque meuble représenterait alors un tableau vecteur à une dimension. Et vous pourriez en avoir autant que vous voulez. Le contenu d'un emplacement de rangement (ce qu'il y a dedans), ici est un CD Audio. Le CD Audio représente le contenu d'un emplacement de la variable tableau vecteur en PHP. En résumé nous avons :
On peut aussi représenter (arbitrairement) un vecteur comme un tableau en mémoire qui aurait cet aspect (imagé, bien sûr. Ça n'est pas comme ça dans la mémoire de l'ordinateur). Nom du meuble (ici du tableau) : $MeubleClassique
Les cases en jaune représentent les étiquettes de la variable $MeubleClassique, et les cases blanches les titres des CD Audios (dans les emplacements de rangement). On voit tout de suite que le disque de la case N°3 du meuble est "Bach". Alors, vous vous demandez certainement quelle peut bien être l'utilité d'une telle chose ? Pourquoi se casser la tête à utiliser des variables tableaux indicées (ou indexées, c'est pareil) ? La raison est simple, et multiple en même temps. D'abord, parce que c'est parfois plus simple de classer des choses dans des cases que l'on peut repérer par un simple numéro, et ensuite, et là, nous n'y pouvons rien, parce que les Navigateurs, lorsqu'ils rencontrent des objets dans vos pages HTML, les rangent dans des tableaux internes indexés. Et si nous voulons avoir accès à ces objets en série, lorsqu'ils sont très nombreux par exemple, il est plus simple de faire une "boucle" sur un tableau indexé que de devoir donner un nom à chaque objet. Mais nous verrons ça dans beaucoup de chapitres de la Boîte à outils. |
Déclaration d'un tableau
indexé (vecteur) en PHP
Le meuble $MeubleClassique est le vecteur indexé (on dit un "tableau" en jargon informatique). C'est une variable au sens PHP du terme. $MeubleCassique est son nom. Contrairement aux autres variables en PHP, celle-ci, il va falloir la déclarer si on veut pouvoir s'en servir dans les fonctions dans lesquelles nous en aurons besoin. La déclarer, ça veut dire lui donner un nom, comme à une variable traditionnelle, mais en plus, indiquer à PHP que ce sera une tableau. L'instruction est simplement la suivante : $MeubleClassique = array() ; Ainsi, PHP saura que nous voulons définir la variable $MeubleClassique comme étant un tableau indexé.
|
Comment remplir un tableau indexé
Nous savons déjà comment remplir une variable traditionnelle (voir Les variables ). Hé bien pour remplir une case d'une tableau il n'y a qu'à rajouter son "index" dans la tableau au nom de la variable, et le tour est joué. Par exemple, pour remplir le tableau pris comme exemple plus haut, nous écrirons simplement (quelque part après avoir déclaré notre tableau bien entendu) : $MeubleClassique[0] = "Mozart"
;
Comme vous le voyez, ça n'est pas très compliqué. Attention cependant, la case dite $MeubleClassique[2] est en fait la quatrième case de notre meuble, puisque vous vous souvenez que la première case porte le N° 0. Nous utiliserons cette manière de faire pour remplir un tableau n'importe où dans le cours d'un programme. C'est la même chose que de donner une valeur à une variable. Il y a une deuxième manière de remplir un tableau. Si l'on sait exactement ce que l'on veut mettre dedans lors de la déclaration du tableau. C'est de le remplir lors de sa déclaration. Par exemple, pour remplir le tableau pris comme exemple, on écrira simplement : $MeubleClassique = array("Mozart", "Chopin", "Haendel", "Bach", "Lully", "Gounod", "Schubert", "Brahms", "Verdi", "Wagner") ; Mais encore faut-il savoir par avance ce que nous voulons mettre dedans lors de sa déclaration, ce qui n'est pas toujours le cas. Dans notre exemple à nous, toutes les données sont du même type, chaîne de caractères (elles sont entre guillemets). Mais nous aurions pu mélanger allègrement tout ce que nous aurions voulu. Ca ne pose aucun problème à PHP. |
Comment accéder au contenu d'une
tableau
Nous savons déjà comment accéder au contenu d'une variable (voir Les variables ). Hé bien pour accéder au contenu d'une case d'une tableau indexée, c'est exactement la même chose, sauf qu'il faudra indiquer à PHP quel est l'index de la case du tableau à laquelle nous voulons accéder. Pour relever le contenu de la case N°3 du tableau $MeubleClassique, et mettre ce contenu dans une variable appelée par exemple $NomDuDisque, nous écrirons l'instruction : $NomDuDisque = $MeubleClassique[3] ;
A partir de ce moment là, la variable $NomDuDisque contiendra la chaîne de caractère "Bach", qui est aussi le contenu de la case d'index 3 (on dit aussi "indice" en jargon informaticien). Et toujours attention, la case portant l'indice 3 est la quatrième case du tableau $MeubleClassique puisqu'on se souvient toujours que la première case de la tableau $MeubleClassique porte le N° 0. Je sais, c'est emm....bêtant, mais c'est comme ça !
|
Comment modifier le contenu d'un poste
d'un tableau indexé
Le mot "poste" représente juste un casier de notre
tableau. Par exemple le casier d'indice 3 sera le poste d'indice 3.
Tout simplement. $MeubleClassique[9] = "Richard Wagner" ; Et dorénavant, le poste 9 de notre tableau contiendra la nouvelle
valeur "Richard Wagner" à la place
de sa valeur antérieure qui était "Wagner"
tout court. On dit que la nouvelle valeur a "écrasé"
la précédente. |
Comment rajouter un poste
d'un tableau indexé
Il se peut aussi que nous ayons oublié un casier. Par exemple
parce que nous avons acheté un CD audio d'un compositeur que
nous ne possédions pas encore au moment de la création
de notre meuble classique. Supposons par exemple que nous venions
d'acheter un disque de Berlioz. Il va bien falloir le ranger quelque
part celui-là hein ? Ca ferait désordre de le laisser
traîner sur le canapé. $MeubleClassique[10] = "Berlioz" ; En disant ça, le poste 10 sera créé dans notre tableau et contiendra la valeur "Berlioz". C'est pas plus compliqué.
|
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.