代码之家  ›  专栏  ›  技术社区  ›  schellingerht

调用分配函数上的数组键返回数组?

  •  1
  • schellingerht  · 技术社区  · 7 年前

    ,我可以打电话给 要素 函数返回的数组 ,如下所示: func()['el'] .

    5.6

    作品

    $decoded = json_decode($content, true)['foo'];
    

    ($decoded = json_decode($content, true))['foo']; // syntax error ['
    

    我不明白为什么我不能分配 json_decode($content, true) $decoded 并调用元素 foo 立即这在php中运行良好 7.

    为什么这很有趣?

    我的 ,已应用 php 5.6

    1 回复  |  直到 7 年前
        1
  •  3
  •   iainn    7 年前

    PHP 7引入的众多特性之一是 Abstract Syntax Tree . 这直接导致可能出现更复杂的表达式,例如您问题中的表达式。

    <?php
    function foo() { return ['a' => 'b']; }
    
    echo foo()['a']; // Works in PHP 5.4+
    echo (foo())['a']; // Works in PHP 7+
    

    正如您所提到的,5.4中添加了函数数组解引用,但只是作为解析器中的一个特例。在PHP 7+中,可以解引用生成数组的任何表达式。