Syntaxe d'un élément de tableau

Eléphanteau du PHP | 34 Messages

12 mars 2008, 13:58

Bonjour,

une question un peu basique mais dont je n'arrive pas à trouver une réponse claire ou plutôt dont je trouve des réponses qui ne vont pas dans le même sens.

Pour un tableau, quand on cherche cherche un élément particulier, quelle est la syntaxe juste :

$tab[item]

$tab['item']

$tab["item"]


Je pose la question car je trouve les 3 versions dans un même programme.

Merci de m'éclairer sur ce point.

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

12 mars 2008, 15:51

Ok, voici la réponse:

On sait qu'un tableau contient des éléments quelque soit le nombre de ses dimensions
A la base un tableau a une seule dimension, c'est à dire une séquence de cellules pouvant contenir chacune une donnée.

Les cellules sont indexées par défaut par une numérotation séquentielle allant de 0 à N selon le nombre de cellules du tableau.

A la base, l'accès à une cellule en mode lecture écriture se fait par le biais de l'index de la cellule. De ce faut si on a un tableau $T de 3 cellules. Ces dernières seront indexées de 0 pour la première à 2 pour la dernière.
Pour accéder aux cellules du tableau $T en mode écriture on écrit alors:
$T[0] = "contenu de la cellule 1";
$T[1] = "contenu de la cellule 2";
...
 
Et pour accéder aux cellules pour les afficher par exemple, on écrit:
echo $T[0];
echo $T[1];
...
Par ailleurs, le programmeur peut effectivement avoir recours à une seconde technique d'indexation des tableaux appelée : Indexation associative. Cette technique consiste à donner des noms (alias) alphanumériques aux index des cellules. Les noms donnés doivent être uniques car ils permettront l'accès aux cellules au même titre que les index automatiques de base numériques.

De ce fait on peut créer un tableau associatif comme suit :
$T["cellule1"] = blabla....
$T["cellule2"] = blabli....
NB:
Le nom de l'index (entre []) est alphanumérique entouré par des guillemets "" ou des apostrophes '' (ça revient au même)

Le rôle de l'index nommé (alias) est de pouvoir indexer les données par un critère de recherche unique dans les programmes de traitement pour faciliter la manipulation des données. Par exemple, on peut indexer les cellules d'un tableau "panier d'achats" par la référence de l'article acheté étant donné qu'un article est unique dans le panier (abstraction faite de la quantité possible du même article). Un tel tableau s'écrirait :
$panier["lait_1L"] = 2; //2 boites de lait 1 litre
$panier["eau_1Pack"] = 2; //2 packs d'eau
$panier["café_1Kg"] = 1; //1 paquet de café 1Kg
Conclusion : L'indexation automatique numérique ou associative (par alias personnalisé unique) d'un tableau permet d'accéder à ses cellules.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Invité
Invité n'ayant pas de compte PHPfrance

12 mars 2008, 17:11

Bonjour Sadeq et merci pour cette explication claire.

Mais j'ai dû mal me faire comprendre ; en effet ma question portait uniquement sur la syntaxe de l'écriture d'un élément d'un tableau. Je me demandais laquelle des trois manière était la plus juste et, dans le cas où les trois étaient justes, quelles étaient leur différence. Donc, est-ce que si :

$a = $tab[item]

$b = $tab['item']

alors

$a = $b

et idem avec

$c = $tab["item"]

Donc pourquoi parfois utilise-t-on des ' ou des " ou encore rien du tout dans le crochet ?

Encore merci pour ta réponse et letemps que tu as pris pour l'écrire.

d0m
Mammouth du PHP | 1141 Messages

12 mars 2008, 17:48

salut,

si la clé est item c'est à dire une chaine de caractères, il faut l'entourer de double ou simple quotes.

il faut donc écrire :
$tab['item']
//ou
$tab["item"]
la différence entre simple et double quote ( et ça c'est valable pour toutes les chaines, pas seuelement les tableaux) est que le chaine entre simple quote ne sera pas parcourue pour vérifier si elle contient une variable PHP.

Par exemple :
$a = 'bonjour';
echo '$a monsieur';
//va afficher : $a monsieur
echo "$a monsieur";
//va afficher : bonjour monsieur

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

12 mars 2008, 18:09

La seule forme anormale est : $tab[item]
Car, cela sous-entend que le mot item désigne une constante de php.

Exemple:
define("constante1", "une cellule");
$tab[constante1] = "blabla";

Pour ce qui est de $tab['item'] et $tab["item"] : ils sont identiques syntaxiquement parlant et désignent un même index nommé item. et se différencient par ce qu'a expliqué d0m.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 34 Messages

15 mars 2008, 14:53

Merci à tous pour vos explications.

J'ai une autre question mais je vais ouvrir un autre fil pour la poser.

A bientôt.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

15 mars 2008, 15:29

Modération :
boobz, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.
;)