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

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 3

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

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

до 5.3.0, выполните следующие действия:

$range = array_map( "name_of_function_to_call", $myArray );