Maison >développement back-end >tutoriel php >Pourquoi ne puis-je pas accéder dynamiquement aux valeurs de tableau en PHP avec une seule ligne ?

Pourquoi ne puis-je pas accéder dynamiquement aux valeurs de tableau en PHP avec une seule ligne ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-12 11:48:02878parcourir

Why Can't I Access Array Values Dynamically in PHP with a Single Line?

Comprendre l'accès aux valeurs de tableau à la volée en PHP

En PHP, l'accès dynamique aux valeurs de tableau a présenté un défi pour les développeurs à la recherche de solutions simples efficaces. Ce problème survient lorsque l'on tente de mapper une variable à l'aide d'un tableau dans une seule ligne de code. Alors que la syntaxe souhaitée, comme echo array('a','b','c')[$key];, entraîne une erreur, une solution de contournement utilisant une variable intermédiaire comme $variable = array('a','b ','c'); echo $variable[$clé]; devient nécessaire.

Bien que cette méthode résolve le problème immédiat, elle introduit une variable inutile. Pour approfondir la raison technique de cette limitation, la grammaire PHP restreint la notation en indice aux expressions variables, et non aux expressions générales. Cette grammaire diffère de nombreux autres langages de programmation qui permettent l'indice sur n'importe quelle expression.

Fait intéressant, la grammaire de PHP englobe des cas supplémentaires où l'indice sur des expressions non variables entraîne une syntaxe invalide, tels que :

$x = array(1,2,3);
print ($x)[1]; //illegal, on a parenthetical expression, not a variable exp.

function ret($foo) { return $foo; }
echo ret($x)[1]; // illegal, on a call expression, not a variable exp.

Bien que l'incapacité d'écrire des expressions arbitraires en PHP puisse être considérée comme une lacune, cela pourrait provenir des limitations du générateur d'analyseur employé ou du désir de maintenir compatibilité ascendante.

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