升级PHP时匿名函数中断

时间:2015-10-03 03:32:13

标签: php anonymous-function array-walk

当我将服务器/从PHP 5.3升级到5.4时,以下代码突然崩溃:

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时会发生这种情况?

由于

1 个答案:

答案 0 :(得分:1)

您目前正在使用php 5.2。

使用代码<? echo phpinfo(): ?>运行phpinfo()会检测到版本。从我使用php 5.2 - 5.5的测试中,这只发生在lambda函数存在之前的php 5.2中。

当然,您已经从我们的评论中了解到这一点,这是针对未来的访问者。