Page 1 sur 1

Syntaxe d'un élément de tableau

Posté : 12 mars 2008, 13:58
par boobz
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.

Posté : 12 mars 2008, 15:51
par sadeq
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.

Posté : 12 mars 2008, 17:11
par Invité
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.

Posté : 12 mars 2008, 17:48
par d0m
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

Posté : 12 mars 2008, 18:09
par sadeq
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.

Posté : 15 mars 2008, 14:53
par boobz
Merci à tous pour vos explications.

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

A bientôt.

Posté : 15 mars 2008, 15:29
par albat
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.
;)