Я развиваю локально с помощью Mamp, и все было здорово, пока я не загрузился на сервер. Я сузил свою проблему до того, чтобы иметь дело с версией php. Mamp работал на более новой версии, чем сервер.
Если я запустил Mamp на PHP 5.6.2 (или 5.5.X), у меня нет проблем с моим кодом. Но если все, что я делаю, это изменить версию PHP в настройках Mamp на PHP 5.3.29, если вы жалуетесь на следующую строку кода:
$shipping = reset($arrShipOptions['options'])[0]['price'];
Ошибка:
синтаксическая ошибка, неожиданно '['
Первое, что пришло в голову, это то, что 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+
Разыменование разметки
Источник http://php.net/manual/en/migration54.new-features.php (третья функция)
Решение разбивает код на две строки:
$shipping = reset($arrShipOptions['options']);
$shipping = $shipping[0]['price'];
array dereferencing
не было доступно до PHP 5.4