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 );
Ответ 4
Я думаю, что функция лямбда-стиля еще не реализована в 5.2
используйте create_function или просто создайте функцию и передайте ей имя функции в файле array_map.