为什么PHP抛出这个解析错误?

为什么PHP抛出这个解析错误?,php,arrays,parsing,php-parse-error,Php,Arrays,Parsing,Php Parse Error,我有一个小问题要问大家。我目前在000webhost上有我的站点,并有以下行: $price = explode(".",$item->sellingStatus->currentPrice)[0]; 导致以下错误: 分析错误:语法错误,中出现意外的“[” /第58行的home/a1257018/public_html/scripts/myfile.php 当它不会在本地主机上导致此错误时。代码应该可以工作…explode返回一个数组,并且[0]只调用第一项。这为什么会引发错误?

我有一个小问题要问大家。我目前在000webhost上有我的站点,并有以下行:

$price  = explode(".",$item->sellingStatus->currentPrice)[0];
导致以下错误:

分析错误:语法错误,中出现意外的“[” /第58行的home/a1257018/public_html/scripts/myfile.php


当它不会在本地主机上导致此错误时。代码应该可以工作…explode返回一个数组,并且
[0]
只调用第一项。这为什么会引发错误?

此语法仅在PHP 5.4+中允许。您必须在旧版本中使用临时变量:

$tmp = explode('.', $item->sellingStatus->currentPrice);
$price  = $tmp[0];
已经存在。

将其用作

$array  = explode(".", $item->sellingStatus->currentPrice);
$price = $array[0];
这是因为您的服务器不支持这种语法,因为
php<5.4
,下面是
5.3.19
和使用
php-5.4
中的显示

$price  = explode(".",$item->sellingStatus->currentPrice);
$currentPrice = $price[0];

这应该可以工作。

本地安装了哪个PHP版本?您确定'explode()的结果吗'是一个数组,而数组不是空的?@Zim84即使不是,也不会导致语法错误Gah..这就是我担心的。我相信000webhost使用PHP5.2。看起来我有很多编辑要做。谢谢!噢,PHP的乐趣;-)我仍然不知道为什么没有人更早地实现它。将此归咎于PHP设计并不是真正正确的,所有语言都会在新版本中添加新功能,使用Ruby、Java或C#等语言的新功能来对抗旧版本的语言会产生错误。我不怪PHP。我只是说我不理解他们的决定。我希望Java和C#(Ruby不确定)在童年时实现了对返回值的数组访问。