首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用array_walk_recursive

如何使用array_walk_recursive
EN

Stack Overflow用户
提问于 2011-07-01 20:11:30
回答 3查看 18.2K关注 0票数 4

我如何使用array_walk_recursive()而不是下面的代码:

代码语言:javascript
复制
function check_value($val){
  if(is_array($val)){
    foreach($val as $key => $value)
      $val[$key] = check_value($value);
    return $val;
  }

  return clean_value($val);
}
EN

回答 3

Stack Overflow用户

发布于 2011-07-01 21:02:26

我认为这应该做同样的事情。请注意,函数的参数是作为引用传递的(即&$value)。

代码语言:javascript
复制
array_walk_recursive($array, function(&$value) {
    $value = clean_value($value);
});

对于较旧的PHP版本:

代码语言:javascript
复制
function check_value(&$value) {
    $value = clean_value($value);
}
array_walk_recursive($array, 'check_value');
票数 8
EN

Stack Overflow用户

发布于 2011-07-01 20:35:53

我会重写clean_value函数来接受引用参数。例如,这两个代码段在功能上是相同的:

1:

代码语言:javascript
复制
function clean_value($value) {
    //manipulate $value
    return $value;
}

$value = clean_value($value);

2:

代码语言:javascript
复制
function clean_value(&$value) {
    //manipulate $value
}

clean_value($value);    

对于后者(2),我们可以在array_walk_recursive中使用它,如下所示:

代码语言:javascript
复制
array_walk_recursive($value_tree, 'clean_value');

如果我们不能编辑clean_value,我会这样解决它:

代码语言:javascript
复制
$clean_by_reference = function(&$val) {
    $val = clean_value($val);
};
array_walk_recursive($value_tree, $clean_by_reference);

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2011-07-01 20:17:52

这应该是可行的:

代码语言:javascript
复制
function check_value ( $val ) {
    if ( is_array ( $val ) ) array_walk_recursive ( $val, 'check_value' );
    return clean_value ( $val );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6547775

复制
相关文章

相似问题

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