PHP では、配列値に動的にアクセスすることが、効率的なワンライナーを求める開発者にとって課題となっていました。この問題は、コードの 1 行内で配列を使用して変数をマップしようとすると発生します。 echo array('a','b','c')[$key]; のような目的の構文ではエラーが発生しますが、$variable = array('a','b のような中間変数を使用する回避策) ','c');エコー $variable[$key];
この方法では当面の問題は解決されますが、不要な変数が発生します。この制限の背後にある技術的な理由を詳しく説明すると、PHP の文法では添字表記が一般的な式ではなく変数式に制限されています。この文法は、任意の式に添字を付けることができる他の多くのプログラミング言語とは異なります。
興味深いことに、PHP の文法には、次のような非変数式に添字を付けると無効な構文になる追加のケースも含まれています。
$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.
PHP で任意の式に添字を付けることができないのは欠陥とみなされるかもしれませんが、それは、パーサー ジェネレーターを使用するか、下位互換性を維持したい場合。
以上がPHP で 1 行で配列値に動的にアクセスできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。