1

在 PHP 中,我在以下代码行中收到“解析错误:语法错误,意外 '['”:

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

我会提供更多细节,但仅此而已。这条线对我来说似乎无可挑剔,实际上运行良好,直到我将它复制到另一个文件中。最大的不同是现在该行是一个类的一部分,并且它被一个我不太了解的大型软件库调用。什么可能导致此问题?

更多上下文:

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

1 回答 1

1

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

你在那里做的事情叫做数组解引用。手册说:

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

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

而且,为了检查,让我们尝试运行

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

适用于各种不同的 PHP 版本。结果是,PHP 版本 5.4 和更高版本输出“2”,这将是您想要的结果。

于 2013-08-01T05:38:46.067 回答