mpe*_*pen 5 php language-features language-design
为什么我不能这样做?
explode(',','1,2,3', 1)[0]
Run Code Online (Sandbox Code Playgroud)
每种其他语言都支持它.
答案我正在寻找:(因为人们似乎认为这是一个毫无意义的咆哮)
在变量和返回值的行为方式之间是否存在某种差异?
这是一个设计决定吗?他们只是懒惰吗?有没有关于语言的构建方式,这使得这非常难以实现?
为什么我不能这样做?
因为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]