意外的'['返回时爆炸(“”,$ message)[0];

时间:2013-08-01 05:16:38

标签: php

在PHP中,我在以下代码行中收到“Parse error:syntax error,unexpected'['”:

return explode(" ", $message)[0];

我会提供更多细节,但这确实是关于它的。这条线对我来说看起来无可挑剔,实际上运行正常,直到我将它复制到另一个文件中。最大的区别在于,现在该行是类的一部分,并且它被一个我不太了解的大型软件库调用。可能导致这个问题的原因是什么?

更多背景信息:

public function getIRCCommand($message)
{
    if ($message[0] != ":")
    {
        return explode(" ", $message)[0];
    }
    else
    {
        return preg_split("/\s+/", $message)[1];
    }
}

1 个答案:

答案 0 :(得分:1)

你可能在PHP 5.3或更低版本上运行。您需要升级到至少PHP 5.4以使其工作(或使用临时变量来访问返回数组的函数的元素)。

你在那里做的是array dereferencing。手册说:

  

从PHP 5.4开始,可以直接对函数或方法调用的结果进行数组取消引用。之前只能使用临时变量。

     

从PHP 5.5开始,可以对数组取消引用数组文字。

而且,要检查一下,让我们尝试运行

<?php
echo explode(" ", "1 2 3")[1];

for all kinds of diferent PHP versions。结果是,PHP版本5.4和hihgher输出“2”,这将是您想要的结果。