【发布时间】:2015-10-03 03:32:12
【问题描述】:
当我从 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 时会出现此问题?
谢谢
【问题讨论】:
-
看起来 array_walk_recursive 函数在 php5.4 php.net/manual/en/function.array-walk-recursive.php 中仍然存在。没有必要打破它。但是我可以看到你添加了匿名函数..
function ($v,$k)....我认为它需要修改 -
@Exception 那是我不明白的。相同的代码在 5.3 服务器上运行良好,在 5.4 服务器上运行中断。在这一点上,我很高兴任何解决方法只是让它运行
-
我很久以前从其他地方得到了这个代码sn-p,我自己对匿名函数并不熟悉,这就是为什么我想不出另一种方法来获得相同的结果(假设存在)
-
您必须使用 5.2。我无法在我的服务器 atm 上复制它。你能运行一个phpinfo并确认版本吗?
-
也无法使用沙盒进行复制。所以看看你能不能得到特定的版本,这样我就可以完全复制它
标签: php anonymous-function array-walk