PHP使用函数返回值作为数组

PHP使用函数返回值作为数组,php,Php,为什么这样做有效: $cacheMatchesNotPlayed = $cache->load('externalData'); $cacheMatchesNotPlayed = $cacheMatchesNotPlayed['matchesNotPlayed']; 但这不起作用: $cacheMatchesNotPlayed = $cache->load('externalData')['matchesNotPlayed']; 有

为什么这样做有效:

        $cacheMatchesNotPlayed = $cache->load('externalData');
        $cacheMatchesNotPlayed = $cacheMatchesNotPlayed['matchesNotPlayed'];
但这不起作用:

        $cacheMatchesNotPlayed = $cache->load('externalData')['matchesNotPlayed'];

有什么原因吗?第二位更容易编写。

因为PHP不支持这种语法。

PHP只是不支持您描述的数组解引用。这里还包括:


PHP不支持您想要执行的函数数组解引用

请参阅有关该主题的RFC,以及相关的邮件列表对话,这些对话大约在去年的这个时候被拒绝了。虽然有人支持这种语法,但它仍然是一个常见的请求(通常是“为什么它不起作用?”),目前还没有计划引入这种语法

至于原因,很简单,实现它的代码还没有提交审批(如果已经编写)

更新


这个特性已经在PHP的主干(主开发)分支中实现,并且很可能包含在下一个非错误修复版本(5.4.0)中。对于任何想玩FAD的人,请随意下载一个。

@Andrey:除了这个,我可以想到更愚蠢的限制。:-)@萨拉特-我说了其中一个:)@Andrey:哈哈,很公平:)实现这个功能很难还是有其他原因?因为它是PHP的一个非常烦人的“特性”,所以我总是这样使用它,然后想知道为什么我的代码不起作用。我从来没有研究过实现它需要什么,所以我不能说这有多困难。我所能说的是,多年来一直有人就这个问题提出意见,但仍然没有任何准则。虽然任务的复杂性和提交的补丁的缺乏可能没有真正的相关性。