我有以下代码
function MaximArray($arr)
{
$GLOBALS['maxim'] = 0;
array_walk_recursive($arr,create_function('$item,$key','if($item > $GLOBALS["maxim"]) $GLOBALS["maxim"] = $item;'));
return $GLOBALS['maxim'];
}为什么这个函数与$GLOBALS‘’maxim‘一起工作,但是如果我将一个变量声明为全局内部函数并使用它,就不能工作了?我了解到,$GLOBALS‘和全球$a是平等的。
使用全局变量$maxim的示例:
$maxim=0;
function MaximArray($arr)
{
global $maxim;
array_walk_recursive($arr,create_function('$item,$key','if($item > $maxim) $maxim = $item;'));
return $maxim;
}发布于 2014-01-29 16:05:41
假设您使用的是PHP5.3,您可以使用适当的内联函数,而不是笨重的旧create_function()语法。
array_walk_recursive($arr,function($item,$key) use $maxim {if($item > $maxim) $maxim = $item;}));注意use $maxim位--这个语法允许您将局部变量传递到内联函数中。使用create_function()是不可能的。
正如我所说的,这是针对PHP5.3和更高版本的。如果您使用的是PHP5.2或更早版本,那么您将无法使用上述语法。然而,由于PHP5.2在三年前被宣布结束生命,如果是这样的话,那么您应该紧急考虑升级。
https://stackoverflow.com/questions/21435656
复制相似问题