PHP 中的動態陣列存取[原文:動態存取陣列值]
PHP 提供了使用括號表示法存取陣列數值的功能([])。然而,一個常見的痛點是在使用表達式時無法直接實現這一點。
問題:
在以下範例中,嘗試使用括號內的表達式會產生錯誤:
echo array('a', 'b', 'c')[$key];
解:
此錯誤的原因是PHP 語法的限制。下標表示法僅對變數表達式有效,對一般表達式無效。為了克服這個問題,您可以使用中間變數:
$variable = array('a', 'b', 'c'); echo $variable[$key];
技術解釋:
PHP 的語法不允許在表達式上使用下標表示法。這意味著您不能將其應用於函數呼叫、括號或其他表達式的結果。此行為與其他語言不同,其他語言可以根據表達式解析下標。
其他無效下標的例子:
$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.
以上是為什麼無法在 PHP 中使用表達式存取數組值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!