2015-10-03 2 views
0

Следующий кода внезапно нарушение, когда я переключился сервера/обновления с PHP 5.3 до 5.4:Anonymous функция разрывные при обновлении PHP

function arrayValRecursive($key, array $arr, $string=false){ 
    $val = array(); 
    array_walk_recursive($arr, function($v, $k) use($key, &$val){ 
     if($k == $key) array_push($val, $v); 
    }); 
    if($string==true){ 
     return count($val) > 1 ? $val : array_pop($val); 
    } 
    else { 
     return $val; 
    } 
} 

Я получаю ошибку Parse error: syntax error, unexpected T_FUNCTION, который, кажется, из-за анонимные функции в строке array_walk_recursive.

Как я могу написать эту функцию по-другому, чтобы избежать этой проблемы, и почему это происходит при обновлении PHP?

Благодаря

+0

выглядит как array_walk_recursive функция все еще существует в php5.4 http://php.net/manual/en/function.array-walk-recursive.php. нет смысла прерывать его. Но, как я вижу, вы добавили анонимную функцию. 'function ($ v, $ k) ....' Я думаю, что ему нужно изменить – Exception

+0

@Exception, это то, что я не делаю Понимаю. Тот же код отлично работает на сервере 5.3 и разбивается на 5.4. На данный момент я рад за любое обходное решение, чтобы заставить его работать – John

+0

Я получил этот фрагмент кода из где-то еще давно, и сам не знаком с анонимными функциями, поэтому я не могу найти альтернативный метод чтобы получить тот же результат (если он существует) – John

ответ

1

Вы используете PHP 5.2 от того, что я могу сказать.

Запуск a phpinfo() с кодом <? echo phpinfo(): ?> будет определять версию. Из моих тестов с использованием php 5.2 - 5.5 это происходит только в php 5.2 до того, как существовали лямбда-функции.

Конечно, вы уже знаете это из наших комментариев, это для будущих посетителей.

+0

hes правильно он ломается на 5.4, протестирован здесь: https://3v4l.org –

+0

Невозможно реплицировать ни на одном из моих серверов или в любой из песочниц, которые позволяют вам изменять версии PHP, кроме того, он заявляет в комментариях на самом деле на PHP 5.2 после миграции сервера – Jesse

+0

Это не отличная PHP-песочница imho, я намеренно избегаю этого для плохих результатов. Попробуйте http://phptester.net/ или http://sandbox.onlinephpfunctions.com/ – Jesse