Les tableaux associatifs à une dimension (vecteurs)
Nous avons vu qu'il existait des tables indéxées (voir la leçon à ce sujet pour celles et ceux qui ne l'ont pas vue) et comment ils fonctionnaient. En PHP, et c'est extrêmement pratique, il existe une autre sorte de tableau, les tableaux associatifs. Un bien grand mot pour pas grand chose en fait. J'explique : Les tableaux sont et resteront toujours des tableaux (heureusement pour nous). Des sortes de grands meubles avec autant de casiers que l'on veut (ou à peu de chose près). Dans les tableaux indexés, il y a une étiquette sur chaque casier (un numéro) pour les repérer (ce que l'on appelle l'index, ou indice dans le cas des tableaux indexés), et on sait que l'on peut mettre tout ce qu'on veut dans un casier (type de données). Dans les tableaux associatifs, c'est très exactement la même
chose, sauf qu'à la place d'un numéro pour repérer
un casier d'un autre dans le grand meuble, on a le droit d'écrire
ce que l'on veut sur l'étiquette (pas tout à fait, mais
presque). On appelle ces étiquettes des "clés".
|
Déclaration d'un tableau associatif
à une dimension
Comme tous les tableaux, PHP demande de les déclarer. Normal.
Il faut bien lui dire ce que l'on veut faire et lui permettre de réserver
la place nécessaire en mémoire hein ? Le pauvre... Comme nous savons d'emblé ce que nous allons mettre dans notre tableau, autant le remplir tout de suite lors de sa déclaration. Nous écrirons donc : $JourSemaine = array("Monday" => "Lundi", "Tuesday" => "Mardi", "Wednesday" => "Mercredi", "Thursday" => "Jeudi", "Friday" => "Vendredi", "Saturday" => "Samedi", "Sunday" => "Dimanche") ; Voila. Maintenant, nos seulement vous avez un tableau indexé, mais en plus vous connaissez les jours en Anglais et leur taduction en Français. Pédagogique ça non ? Alors maintenant, quelques explications : $JourSemaine
est le nom que NOUS, programmeur avons décidé de donner
à notre tableau. Je rappelle que toutes les variables, tableau
ou pas, doivent obligatoirement commencer par un $.
"Monday" => "Lundi", signifie pour PHP : tu crée un casier, tu y colle une étiquette
avec marqué dessus "Monday",
et dans ce casier, tu y ranges la valeur "lundi".
|
Comment remplir un tableau associatif
à une dimension
Nous venons de voir une première méthode au paragraphe précédent, pour remplir un tableau associatif à une dimension lors de sa délaration. Mais il se peut que nous ayons oublié des choses ou que nous voulions tout simplement y rajouter des trucs au cours de notre programme. Alors là, rien de plus simple. Il suffit tout simplement de le dire. Par exemple, si nous voulions en plus, dans le même tableau, associer les jours de la semaine en Espagnol à leur équivalent Français, nous n'aurions qu'à écrire quelque part dans notre programme, en dehors de toute déclaration du tableau (elle est déjà faite) : $JourSemaine["Lunes"] = "lundi" ; Le simple fait d'écrire ça, pour un tableau existant
(déjà déclaré, rempli ou non) signifie pour
PHP : "tu crée un casier, tu lui colle une étiquette
sur laquelle il sera marqué "Lunes"
et dans ce casier, tu y range la valeur "lundi".
|
Comment accéder au contenu d'un
tableau associatif à une dimension
Les postes (les casiers) d'un tableau associatif sont comme des variables ordinaires. Ils portent un nom, et ont un contenu. La particulairté, c'est que chaque casier porte une étiquette accollée au nom du tableau. Donc, pour avoir accès au contenu d'un casier particulier, il suffit de connaître le libellé de son étiquette. Par exemple, nous pourrons écrire la chose suivante : echo "Monday en Anglais, veut dire ".$JourSemaine["Monday"] ; ce qui ferait apparaître à l'écran : Monday en Anglais, veut dire Lundi Ou plus simplement encore, si nous voulons transférer, dans une autre variable, le contenu du casier qui porte l'étiquette "Monday", par exemple la variable $LeJour, il faudrait écrire : $LeJour = $JourSemaine["Monday"] ; Ce qui se lit : $LeJour égal $JourSemaine d'indice Monday. Et le contenu du poste passe dans la variable. Bien entendu, le contenu du poste reste tel quel. Il ne bouge pas. |
Comment modifier le contenu d'un poste
d'un tableau associatif à une dimension
Là encore, il faut et il suffit de connaître le libellé de l'étiquette du poste à modifier. Supposons par exemple que nous voulions supprimer la majuscule pour le jour en Français et remplacer "Lundi" par "lundi", dans le poste qui porte l'étiquette "Monday". Il suffit d'écrire : $JourSemaine["Monday"] = "lundi" ; Et le tour est joué. La nouvelle valeur "lundi"
a remplacé (on dit aussi "écrasé") l'ancienne
valeur qui était "Lundi" dans le casier
portant l'étiquette "Monday".
|
Comment rajouter un poste
à un tableau associatif à une dimension
Ca, en fait, nous l'avons déjà vu au chapitre Comment remplir un tableau associatif à une dimension en ajoutant le casier "Lunes" à notre tableau. Mais ça n'est pas mauvais de revenir dessus. Pour rajouter un poste à un tableau associatif comme le nôtre, il suffit d'inventer un nouveau nom d'étiquette et de dire à PHP de se débrouiller. Par exemple, pour continuer les noms en Espagnol, nous pourrions poursuivre notre oeuvre en écrivant : $JourSemaine["Miercoles"] = "Mercredi" ; Le simple fait d'écrire ça, pour un tableau existant (déjà déclaré, bien entendu) signifie pour PHP : "tu crée un casier, tu lui colle une étiquette (clé) sur laquelle il sera marqué "Miercoles" et dans ce casier, tu y range la valeur "Mercredi". Et il le fait sans rechigner (encore une chance...). Notez au passage que j'ai allègrement sauté "Mardi" (parce que je ne me souviens plus comment ça se dit et que j'ai la flemme d'aller regarder dans mon vieux dico d'Espagnol). Mais ça ne dérange aucunement PHP. C'est nous qui décidons du nom de l'étiquette et de ce que nous mettons dans les postes que nous créons. PHP gère tout ça de main de maître. Le tout pour nous, est de bien se souvenir des noms que nous donnons à nos étiquettes, pour pouvoir relire ce que nous avons mis comme valeur dans les casiers correspondants.
|
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.