为什么我不能这样做?
explode(',','1,2,3', 1)[0]
其他语言都支持它。
我正在寻找答案:(因为人们似乎认为这是毫无意义的咆哮)
变量和返回值的行为方式之间是否存在某种差异?我应该注意这一点?
这是一个设计决定吗?他们只是懒惰吗?有没有关于语言的构建方式,这使得这非常难以实现?
答案 0 :(得分:7)
为什么我不能这样做?
因为PHP目前不支持这种语法。但是你可以把它传递给一个函数,例如:
current(explode(',','1,2,3', 1));
否则,您必须先将返回值分配给变量,然后通过索引进行访问。
更多信息:
所以可以链接方法调用或 财产访问。现在很久了 人们要求同样的事情 数组偏移访问。 经常这样 由于不确定性而被拒绝 记忆问题,因为我们不喜欢 内存泄漏。但经过适当的准备 评估费利佩承诺补丁 这允许你做以下事情:
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]
答案 1 :(得分:2)
在我的框架中,我编写了一个函数,可以使用所有可能的数组来完成它:
function elem($array,$key) {
return $array[$key];
}
//> usage
echo elem($whateverArrayHere,'key');
echo elem(explode(),1);
答案 2 :(得分:1)
爆炸返回一个数组,而不是引用。
$tab = explode (',','1,2,3', 1);
$tab[0] = ','
答案 3 :(得分:0)
您也可以考虑....
list($value_I_want_to_keep)=explode(',','1,2,3', 1);
或
$value_I_want_to_keep=strtok('1,2,3',',');
答案 4 :(得分:0)
$pieces = explode(',','1,2,3', 1);
将第一个索引用于:
$pieces[0];