Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

cle de tableau sans quote

2 réponses
Avatar
luc2
sur certaines versions de php, on peut faire :

$tableau[cle]

sur d'autres, c'est refuse. il faut faire :

$tableau["cle"]

ce que je voudrais savoir, c'est a partir de quelle version de php c'est
comme ca, et s'il y a un moyen d'autoriser l'ancienne syntaxe avec une
option de php.ini

2 réponses

Avatar
Olivier Miakinen
Le 18/06/2009 16:29, luc2 a écrit :
sur certaines versions de php, on peut faire :

$tableau[cle]

sur d'autres, c'est refuse. il faut faire :

$tableau["cle"]

ce que je voudrais savoir, c'est a partir de quelle version de php c'est
comme ca,



À ce que je crois, ça a *toujours* été comme ça. Utiliser une constante
non définie à la place d'une chaîne de caractères a toujours fait
émettre une alerte de type E_NOTICE tandis que cette constante était
remplacée par la chaîne de caractères.

La différence ne doit donc pas tenir au numéro de version, mais plutôt à
une valeur différente de error_reporting :
http://fr3.php.net/manual/fr/errorfunc.configuration.php#ini.error-reporting

et s'il y a un moyen d'autoriser l'ancienne syntaxe avec une
option de php.ini



Remettre error_reporting à E_ALL & ~E_NOTICE au lieu de E_ALL ? Cela
dit, c'est quand même une mauvaise idée de ne pas corriger les scripts.

Une correction intermédiaire serait de définir ceci au début des scripts
qui en ont besoin, pour chacune des valeurs en question :
define("cle", "cle");
Avatar
John GALLET
Bonjour,

À ce que je crois, ça a *toujours* été comme ça.



Non, en PHP 3 au moins et probablement au début de PHP 4 on te
permettait de faire attention tout seul à la syntaxe de tes variables et
leur déclaration. Mais ça date tellement de mathusalem que ton "toujours
été" est tout à fait cohérent.

Une correction intermédiaire serait de définir ceci au début des scripts
qui en ont besoin, pour chacune des valeurs en question :
define("cle", "cle");



La vraie question à se poser c'est surtout si $tableau[cle] est une
mauvaise syntaxe où si on voulait effectivement définir une constante
appelée cle et s'en servir de clef (ce qui est tout à fait légitime).

Séquence enculage de mouches: on pourrait même plutôt écrire
$tableau['cle'] que $tableau["cle"] sauf si on a l'intention de jouer
avec des clefs de nom dynamique comme $tableau["cle$toto"].

Bzz.
JG