首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$GLOBALS array_walk_recursive

$GLOBALS array_walk_recursive
EN

Stack Overflow用户
提问于 2014-01-29 15:38:05
回答 1查看 207关注 0票数 0

我有以下代码

代码语言:javascript
复制
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的示例:

代码语言:javascript
复制
$maxim=0;
    function MaximArray($arr)
    {
        global $maxim;
        array_walk_recursive($arr,create_function('$item,$key','if($item > $maxim) $maxim = $item;'));
        return $maxim;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-29 16:05:41

假设您使用的是PHP5.3,您可以使用适当的内联函数,而不是笨重的旧create_function()语法。

代码语言:javascript
复制
array_walk_recursive($arr,function($item,$key) use $maxim {if($item > $maxim) $maxim = $item;}));

注意use $maxim位--这个语法允许您将局部变量传递到内联函数中。使用create_function()是不可能的。

正如我所说的,这是针对PHP5.3和更高版本的。如果您使用的是PHP5.2或更早版本,那么您将无法使用上述语法。然而,由于PHP5.2在三年前被宣布结束生命,如果是这样的话,那么您应该紧急考虑升级。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21435656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档