PHP:动态访问数组值

2022-08-30 10:35:40

在php中,我经常需要使用数组映射变量...但我似乎无法在一个衬里中做到这一点。例如:

// the following results in an error:
echo array('a','b','c')[$key];

// this works, using an unnecessary variable:
$variable = array('a','b','c');
echo $variable[$key];

这是一个小问题,但它每隔一段时间就会窃听一次......我不喜欢这样一个事实,即我使用变量没有任何意义;)


答案 1

技术上的答案是,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.

答案 2

这称为数组取消引用。它已在 php 5.4 中添加。http://www.php.net/releases/NEWS_5_4_0_alpha1.txt

update[2012-11-25]: 从 PHP 5.5 开始,已向 contants/strings 和数组添加了反引用