Версия 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();

person tzmatt7447    schedule 16.09.2010    source источник


Ответы (4)


В вашем коде используются anonymous functions, которые поддерживались в PHP 5.3. Итак, вам нужен PHP 5.3, чтобы заставить его работать. Обновите установку PHP на вашем сервере.

Анонимные функции, также известные как замыкания, позволяют создавать функции без определенного имени.

person shamittomar    schedule 16.09.2010

Вы используете анонимные функции, которые доступны, начиная с PHP 5.3.0. .

Чтобы решить эту проблему, вы можете обновить свой PHP, как это было предложено в другом ответе.

В качестве альтернативы вы можете определить функцию вне array_map, а затем использовать это имя функции в вызове array_map.

person codaddict    schedule 16.09.2010

Из руководства по php по анонимным функциям:

Примечание. Анонимные функции доступны, начиная с PHP 5.3.0.

до 5.3.0, сделайте это так:

$range = array_map( "name_of_function_to_call", $myArray );
person Lee    schedule 16.09.2010

Я думаю, что функция стиля лямбда еще не реализована в 5.2.

используйте create_function или просто создайте функцию и передайте ей имя функции в array_map.

person gianebao    schedule 16.09.2010