Syntaxe Array : une erreur récurrente à éviter
Donc voici ce qu'il faut absolument éviter quand vous utilisez un tableau :
<?php echo $tableau[cleDeTableau]; ?>
Alors avez-vous remarqué l'erreur ? L'index (ou la clé si vous préférez) du tableau n'a pas été délimité par des quotes (single ou double).
Réponse du programmeur lambda : oui, mais ça marche tout de même !!!
Faux, oui ça marche mais voici l'enchainement quand vous écrivez ainsi :
Vous renseignez comme clé de tableau une constante non définie et non une chaine ! Donc étant indéfinie, la constante est égale à sa propre valeur. Cela provoque pour le coup, un ralentissement du script puisqu'il va d'abord aller voir si la constante cleDeTableau existe, cela peut aussi provoquer un Warning, si la gestion des erreurs est à son maximum, vous prévénant que la constante n'a pas été définie et enfin une mise en situation :
<?php // init de la var (ici on délimite) $tableau['var'] = "Valeur" // Enchaînement echo $tableau[var]; // affiche valeur echo $tableau['var']; // affiche valeur // On définie la constante pour montrer la différence define('var', 'autreCle'); echo $tableau[var]; /* Va renvoyer : Undefined index puisque l'index n'est pas var mais autreCle on essaie donc d'afficher $tableau['autreCle'] qui n'existe pas */ ?>
Pour résumer en francais :
$tableau['var'] : vous assignez la chaine “var” pour définir la clé de $tableau.
$tableau[var] : vous assignez la constante var comme clé de $tableau.
$tableau[$var] : vous assignez la variable $var comme clé de $tableau.
Donc, si vous n'utilisez pas de constantes proprement dites pour renseigner une valeur à un tableau, fonction ou méthode, délimitez vos chaines pour qu'elles soient prisent comme tel.
* Article original sur http://zebden.fr/index.php?2006/07/19/41-synthaxe-array-une-erreur-recurrente-a-eviter
