1

为什么这段代码会失败

function f(){
    return array('k'=>'abc');
}
print_r(f()['k']);

这个代码有效吗?

function f(){
    return array('k'=>'abc');
}
$a = f();
print_r($a['k']);

唯一的区别是在尝试访问数组元素之前将f' 的结果分配给 。$a如何在f没有额外分配的情况下直接引用结果?

4

1 回答 1

6

这仅在 PHP 5.4 中可用。它被称为数组解引用。在 5.4 之前,您必须存储返回值,然后访问数组元素。

文档

PHP 5.4.0 提供了广泛的新特性:

  • 添加了函数数组解引用,例如 foo()[0]。

如果您在 5.4 以下的任何版本上尝试此操作,您将收到此错误:

解析错误:语法错误,意外的'['在线...

于 2013-06-18T06:43:47.733 回答