【发布时间】:2010-12-15 04:45:20
【问题描述】:
function get_arr() {
return array("one","two","three");
}
echo get_arr()[0];
为什么上面的代码会抛出以下错误?
解析错误:语法错误,意外'['【问题讨论】:
标签: php
function get_arr() {
return array("one","two","three");
}
echo get_arr()[0];
为什么上面的代码会抛出以下错误?
解析错误:语法错误,意外'['【问题讨论】:
标签: php
你也可以
list($firstElement) = get_arr();
【讨论】:
这只是 PHP 语法的一个限制。如果函数返回数组,则不能索引函数的返回值。您的功能没有问题;相反,这显示了 PHP 的自制特性。就像一个katamari 球一样,随着时间的推移,它以一种相当随意的方式增加了特征和语法。从一开始就没有考虑到这一点,这种句法限制就是证明。
同样,即使是这种更简单的构造也不起作用:
// Syntax error
echo array("one", "two", "three")[0];
要解决它,您必须将结果分配给一个变量,然后索引该变量:
$array = get_arr();
echo $array[0];
奇怪的是,他们用对象做对了。 get_obj()->prop 在语法上有效并且按预期工作。去图吧。
【讨论】:
确实,你不是唯一一个想要这样的功能增强的人:PHP Bug 报告#45906
【讨论】:
我很确定你是否这样做:
$myArray = get_arr();
echo $myArray[0];
它会起作用的。不能直接使用bracket。
【讨论】:
“因为你做不到”这不是一个非常令人满意的答案。但事实就是如此。你不能这样做function_which_returns_array()[$offset];你必须将返回值存储在一个$var中然后访问它。
【讨论】:
您不能像那样直接引用返回的数组。您必须将其分配给一个临时变量。
$temp = get_arr();
echo $temp[0];
【讨论】: