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

时间:2010-05-17 17:57:33

标签: php

为什么这样做有效:

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

但这不起作用:

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

有什么理由吗?第二位更容易编写。

3 个答案:

答案 0 :(得分:7)

因为PHP不支持该语法。

答案 1 :(得分:6)

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

查看关于主题http://wiki.php.net/rfc/functionarraydereferencing的RFC以及相关的邮件列表对话,这些对话在去年的这个时候大致有所下降。虽然有人支持这个,但它仍然是一个常见的请求(通常是“为什么这不起作用?”),但是没有计划引入这种语法。

至于为什么,很简单,实现它的代码还没有提交审批(如果已经写完)。

<强>更新

此功能已在PHP的主干(主要开发)分支中实现,并可能包含在下一个非bugfix版本(5.4.0)中。对于想要玩FAD的人,请随时下载trunk snapshot

答案 2 :(得分:5)

PHP就像你所描述的那样不支持数组解除引用。这里也包括:

PHP syntax for dereferencing function result