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'];
我一直在使用 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'];