php 的低版本抱怨括号。为什么?

Lower versions of php complaining about brackets. Why?

我一直在使用 Mamp 在本地进行开发,在我上传到服务器之前一切都很好。我已将我的问题缩小到与 php 版本有关。 Mamp 在比服务器更新的版本上运行。

如果我在 PHP 5.6.2(或 5.5.X)上运行 Mamp,我的代码没有问题。但是,如果我所做的只是将 Mamp 首选项中的 PHP 版本更改为 PHP 5.3.29,如果抱怨以下代码行:

$shipping = reset($arrShipOptions['options'])[0]['price'];

错误是:

syntax error, unexpected '['

首先想到的是 reset() 可能是一个新函数。但是根据 http://php.net/manual/en/function.reset.php 它已经在 PHP 4

中可用

能否请多一双眼睛对此有所了解。 谢谢

在旧的 PHP 版本中,您必须将 reset(或任何其他函数)的结果分配给变量,然后使用 [].

访问它
 $shipping = reset($arrShipOptions['options']);
 $shipping = $shipping[0]['price'];

在 php 5.4 之前,您不能像那样链接语法... http://docs.php.net/manual/en/language.types.array.php

这叫做数组解引用。它在 php 5.3

中不可用
// on PHP 5.4
$secondElement = getArray()[1];

// previously
$tmp = getArray();
$secondElement = $tmp[1];

问题是由于使用了一个名为 PHP 5.4+ 的可用功能

Function array dereferencing

来源http://php.net/manual/en/migration54.new-features.php第三个特征

解决方案是将代码分成两行:

$shipping = reset($arrShipOptions['options']);
$shipping = $shipping[0]['price'];