2010-05-17 47 views
2

为什么说这个工程:使用PHP函数返回值作为数组

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

但是,这并不工作:

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

是有一些原因呢?第二个比较容易写。

回答

6

PHP不支持的功能数组语法,你想做的事情。

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

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

更新

此功能已在树干PHP的(主要开发)分支得到执行,将有可能被列入下一个非bug修复版本(5.4.0)。对于任何想玩FAD的玩家,请随时下载trunk snapshot

+0

难以实现此功能还是有其他原因呢?因为这是一个令人讨厌的PHP特性,我总是这样使用它,然后想知道为什么我的代码不工作。 – 2010-05-17 18:16:33

+0

我从来没有考虑过实施它有什么必要,所以我不能说真的很难。我只能说,这个问题已经有多年的声音,但仍然没有代码。尽管这个任务的复杂性和所提交补丁的缺乏可能没有真正的相关性。 – salathe 2010-05-17 18:25:37

+1

我认为这是一个比接受的更好的答案。 – 2011-05-13 08:12:33

7

因为PHP不支持该语法。

+1

我知道这听起来很简单和愚蠢,但这就是答案... – 2010-05-17 17:59:23

+3

PHP的最愚蠢的限制之一 – Andrey 2010-05-17 17:59:40

+1

@Andrey:除此之外,我还能想到* far * stupider的局限性。 :-) – salathe 2010-05-17 18:09:03