为什么我不能在函数的返回值上使用数组索引?

mpe*_*pen 5 php language-features language-design

为什么我不能这样做?

explode(',','1,2,3', 1)[0]
Run Code Online (Sandbox Code Playgroud)

每种其他语言都支持它.

答案我正在寻找:(因为人们似乎认为这是一个毫无意义的咆哮)

在变量和返回值的行为方式之间是否存在某种差异?

这是一个设计决定吗?他们只是懒惰吗?有没有关于语言的构建方式,这使得这非常难以实现?

web*_*ave 7

为什么我不能这样做?

因为PHP目前不支持这种语法.但是你可以把它传递给一个函数,例如:

current(explode(',','1,2,3', 1));
Run Code Online (Sandbox Code Playgroud)

否则,您必须先将返回值分配给变量,然后通过索引进行访问.

更多信息:

因此,可以链接方法调用或属性访问.很长一段时间以来,人们对阵列偏移访问请求了同样的事情.由于内存问题的不确定性,这经常被拒绝,因为我们不喜欢内存泄漏.但经过适当评估后,Felipe提交了一个补丁,允许您执行以下操作:

function foo() {
    return array(1, 2, 3);
}
echo foo()[2]; // prints 3
Run Code Online (Sandbox Code Playgroud)

http://schlueters.de/blog/archives/138-Features-in-PHP-trunk-Array-dereferencing.html

因此,它正处于开发流程中,但正如我所说,目前尚不支持.

更新

PHP> = 5.4 现在支持函数数组解除引用,例如foo()[0]