我如何使用array_walk_recursive()而不是下面的代码:
function check_value($val){
if(is_array($val)){
foreach($val as $key => $value)
$val[$key] = check_value($value);
return $val;
}
return clean_value($val);
}发布于 2011-07-01 21:02:26
我认为这应该做同样的事情。请注意,函数的参数是作为引用传递的(即&$value)。
array_walk_recursive($array, function(&$value) {
$value = clean_value($value);
});对于较旧的PHP版本:
function check_value(&$value) {
$value = clean_value($value);
}
array_walk_recursive($array, 'check_value');发布于 2011-07-01 20:35:53
我会重写clean_value函数来接受引用参数。例如,这两个代码段在功能上是相同的:
1:
function clean_value($value) {
//manipulate $value
return $value;
}
$value = clean_value($value);和
2:
function clean_value(&$value) {
//manipulate $value
}
clean_value($value); 对于后者(2),我们可以在array_walk_recursive中使用它,如下所示:
array_walk_recursive($value_tree, 'clean_value');如果我们不能编辑clean_value,我会这样解决它:
$clean_by_reference = function(&$val) {
$val = clean_value($val);
};
array_walk_recursive($value_tree, $clean_by_reference);希望这能有所帮助!
发布于 2011-07-01 20:17:52
这应该是可行的:
function check_value ( $val ) {
if ( is_array ( $val ) ) array_walk_recursive ( $val, 'check_value' );
return clean_value ( $val );
}https://stackoverflow.com/questions/6547775
复制相似问题