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(); 

В вашем коде используются 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 .