Версия PHP 5.2.14 / Ошибка разбора: синтаксическая ошибка, неожиданный T_FUNCTION, ожидание ')'
У меня есть определенный кусок кода, который я пытаюсь использовать с версией PHP 5.2.14 . Это несовместимо?? Я запускаю следующее,
jailshell-3.2$ php -l /XYZ/functions.php
И это дает:
Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный T_FUNCTION, ожидание ')' в /XYZ/functions.php в строке 2115 Ошибка анализа /XYZ/functions.php
Код является:
2114 $range = array_map(
2115 function (DatePeriod $p) use ($vt2) {
2116 $res = array();
4 ответа
Ваш код использует anonymous functions
которые были поддержаны в PHP 5.3. Итак, вам нужен PHP 5.3, чтобы он заработал. Обновите установку PHP вашего сервера.
Анонимные функции, также известные как замыкания, позволяют создавать функции без определенного имени.
Вы используете анонимные функции, которые доступны с PHP 5.3.0.
Чтобы решить эту проблему, вы можете обновить свой PHP, как предложено в другом ответе.
В качестве альтернативы вы можете определить функцию за пределами array_map
а затем использовать это имя функции в вызове array_map
Из руководства php по анонимным функциям:
Примечание: анонимные функции доступны начиная с PHP 5.3.0.
до 5.3.0 сделайте это так:
$range = array_map( "name_of_function_to_call", $myArray );
Я думаю, что функция стиля лямбда еще не реализована в 5.2
используйте create_function или просто создайте функцию и передайте ей имя функции в array_map.