Версия PHP 5.2.14 / Ошибка разбора: синтаксическая ошибка, неожиданный T_FUNCTION, ожидание ')' - PullRequest
5 голосов
/ 16 сентября 2010

У меня есть определенный фрагмент кода, который я пытаюсь использовать с версией 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 ]

6 голосов
/ 16 сентября 2010

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

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

4 голосов
/ 16 сентября 2010

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

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

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

3 голосов
/ 16 сентября 2010

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

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

до версии 5.3.0, сделайте так:

$range = array_map( "name_of_function_to_call", $myArray );
1 голос
/ 16 сентября 2010

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

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

...