在php中返回数组会导致语法错误

时间:2009-11-10 19:31:51

标签: php

function get_arr() {
    return array("one","two","three");
}

echo get_arr()[0];

为什么上面的代码会抛出以下错误?

parse error: syntax error, unexpected '['

6 个答案:

答案 0 :(得分:7)

这只是PHP语法的限制。如果函数返回数组,则无法索引函数的返回值。你的功能没有错;相反,这显示了PHP的自制特性。就像一个katamari球一样,它随着时间的推移以一种相当随意的方式增长了功能和语法。它从一开始就没有被考虑过,这种语法限制就是证据。

同样,即使这个更简单的结构也不起作用:

// Syntax error
echo array("one", "two", "three")[0];

要解决此问题,您必须将结果分配给变量,然后索引变量:

$array = get_arr();
echo $array[0];

奇怪的是,他们用物体做对了。 get_obj()->prop在语法上有效并且按预期工作。去图。

答案 1 :(得分:2)

您无法直接引用返回的数组。您必须将其分配给临时变量。

$temp = get_arr();
echo $temp[0];

答案 2 :(得分:0)

“因为你做不到”这不是一个非常令人满意的答案。但事实就是这样。您无法执行function_which_returns_array()[$offset];您必须将返回值存储在$ var中,然后才能访问它。

答案 3 :(得分:0)

我很确定你是否这样做:

$myArray = get_arr();
echo $myArray[0];

它会起作用。你不能直接使用braket。

答案 4 :(得分:0)

事实上,您并不是唯一需要此类功能增强的人:PHP Bug报告#45906

答案 5 :(得分:0)

你也可以

 list($firstElement) = get_arr();