代码之家  ›  专栏  ›  技术社区  ›  Mike Atlas

为什么我不能立即访问分解的数组元素?

  •  7
  • Mike Atlas  · 技术社区  · 14 年前

    为什么我不能立即访问由返回的数组中的元素 explode() ?

    例如,这不起作用:

    $username = explode('.',$thread_user)[1]; 
    //Parse error: syntax error, unexpected '[
    

    但是这个代码是:

    $username = explode('.',$thread_user); 
    $username = $username[1];
    

    我通常不使用PHP编程,所以这让我很困惑。

    6 回复  |  直到 8 年前
        1
  •  4
  •   Brian Lacy    14 年前

    实际上,PHP不支持这种语法。在JavaScript之类的语言中(例如),解析器可以处理更复杂的嵌套/链接操作,但PHP不是这些语言中的一种。

        2
  •  6
  •   James McLeod    14 年前

    为什么不知道怎么做你想做的是 explode 可以返回 false . 在索引到返回值之前,应该检查它。

        3
  •  5
  •   Carlos F    8 年前

    这取决于版本。 5.4菲律宾比索 不支持访问返回的数组。

    来源: http://php.net/manual/en/language.types.array.php#example-115

        4
  •  2
  •   qualbeen    14 年前

    因为explode()返回一个数组,所以可以使用其他函数,如 $username = current(explode('.',$thread_user));

        5
  •  1
  •   budiDino    12 年前

    我只是使用我自己的功能:

    function explodeAndReturnIndex($delimiter, $string, $index){
        $tempArray = explode($delimiter, $string);
        return $tempArray[$index];
    }
    

    然后,您示例的代码将是:

    $username = explodeAndReturnIndex('.', $thread_user, 1);
    
        6
  •  1
  •   ragamufin    12 年前

    以下是如何将其简化为一行:

    $username = current(array_slice(explode('.',$thread_user), indx,1));

    在哪里? indx 是要从分解数组中获取的索引。我刚接触过PHP,但我喜欢说分解数组:)