Maison >développement back-end >tutoriel php >Pourquoi ne puis-je pas accéder aux valeurs de tableau à l'aide d'expressions en PHP ?

Pourquoi ne puis-je pas accéder aux valeurs de tableau à l'aide d'expressions en PHP ?

DDD
DDDoriginal
2024-11-24 00:30:10499parcourir

Why Can't I Access Array Values Using Expressions in PHP?

Accès dynamique aux tableaux en PHP [Original : accéder à la valeur du tableau à la volée]

PHP offre la possibilité d'accéder aux valeurs du tableau en utilisant la notation entre crochets ([]). Cependant, un problème courant est l'incapacité d'y parvenir directement lorsque vous travaillez avec des expressions.

Problème :

Dans l'exemple suivant, tenter d'accéder à une valeur de tableau en utilisant une expression entre parenthèses donne lieu à un erreur :

echo array('a', 'b', 'c')[$key];

Solution :

La raison de cette erreur est une limitation de la grammaire de PHP. La notation en indice n'est valide que pour les expressions variables, pas pour les expressions générales. Pour surmonter cela, vous pouvez utiliser une variable intermédiaire :

$variable = array('a', 'b', 'c');
echo $variable[$key];

Explication technique :

La grammaire PHP n'autorise pas la notation en indice sur les expressions. Cela signifie que vous ne pouvez pas l'appliquer au résultat d'un appel de fonction, aux parenthèses ou à d'autres expressions. Ce comportement diffère des autres langages où il est possible de résoudre des indices par rapport à des expressions.

Exemples supplémentaires d'indices invalides :

$x = array(1, 2, 3);
print ($x)[1]; // Invalid: Subscripted expression is a parenthetical expression.

function ret($foo) { return $foo; }
echo ret($x)[1]; // Invalid: Subscripted expression is a call expression.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn