<分区>
为什么我不能这样做?
explode(',','1,2,3', 1)[0]
所有其他语言都支持它。
我正在寻找的答案:(因为人们似乎认为这是毫无意义的咆哮)
我应该了解变量和返回值的行为方式之间是否存在某种差异?
这是设计决定吗?他们只是懒惰吗?语言的构建方式是否有什么使得实现起来极其困难?
<分区>
为什么我不能这样做?
explode(',','1,2,3', 1)[0]
所有其他语言都支持它。
我正在寻找的答案:(因为人们似乎认为这是毫无意义的咆哮)
我应该了解变量和返回值的行为方式之间是否存在某种差异?
这是设计决定吗?他们只是懒惰吗?语言的构建方式是否有什么使得实现起来极其困难?
最佳答案
Why can't I do this?
因为 PHP 目前不支持这种语法。但是你可以将它传递给一个函数,例如:
current(explode(',','1,2,3', 1));
否则,你必须先将返回值赋给一个变量,然后通过索引访问。
更多信息:
So one can chain method calls or property access. Now for a long time people requested the same thing for array offset access. This was often rejected due to uncertainties about memory issues, as we don't like memory leaks. But after proper evaluation Felipe committed the patch which allows you to do things like:
function foo() {
return array(1, 2, 3);
}
echo foo()[2]; // prints 3
http://schlueters.de/blog/archives/138-Features-in-PHP-trunk-Array-dereferencing.html
因此,它正在开发中,但正如我所说,目前不受支持。
PHP >= 5.4 now supports函数数组取消引用,例如foo()[0]
关于php - 为什么我不能在函数的返回值上使用数组索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6216957/