2010-09-16 2 views
5

У меня есть определенный фрагмент кода, который я пытаюсь использовать с PHP версии 5.2.14. Это несовместимо? Я бег следующего,PHP версии 5.2.14/Ошибка анализа: ошибка синтаксиса, неожиданный T_FUNCTION, ожидающий ')'

jailshell-3.2$ php -l /XYZ/functions.php 

И это дает:

Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in /XYZ/functions.php on line 2115 Errors parsing /XYZ/functions.php

Код:

2114 $range = array_map(
2115    function (DatePeriod $p) use ($vt2) { 
2116    $res = array(); 

ответ

6

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

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

4

Вы используете anonymous functions, которые доступны с PHP 5.3.0.

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

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

3

Из инструкции PHP на Anonymous Functions:

Note: Anonymous functions are available since PHP 5.3.0.

до 5.3.0, сделать это следующим образом:

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