您的位置:首页 > 其它

自定义 array_map() 对应的递归函数 array_map_recursive()

2016-07-18 16:39 573 查看
array_walk有个原生递归函数array_walk_recursive($arr,'function','words'),但是array_map却没有对应的递归函数array_map_recursive,我们可以自定义一个:

functionarray_map_recursive($filter,$data)
{
$result=array();
foreach($dataas$key=>$val)
{
$result[$key]=is_array($val)
?array_map_recursive($filter,$val)
:call_user_func($filter,$val);
}

return$result;
}

应用举例:

$arr=array(
'a'=>'2',
'b'=>array(
'cc'=>'wen',
'dd'=>'jian',
'ee'=>'bao'
)
);

functionfunc_a($value)
{
$value.='_AAA';
return$value;
}

var_dump($arr);

$arr=array_map_recursive('func_a',$arr);

var_dump($arr);


其实吧,完全可以用array_walk_recursive()函数实现该功能,如下代码所示:

$arr=array(
'a'=>'2',
'b'=>array(
'cc'=>'wen',
'dd'=>'jian',
'ee'=>'bao'
)
);

functionfunc_b(&$value)
{
$value.='_AAA';
}

var_dump($arr);

array_walk_recursive($arr,'func_b');

var_dump($arr);

输出:

array(2){ ["a"]=> string(1)"2" ["b"]=> array(3){ ["cc"]=> string(3)"wen" ["dd"]=> string(4)"jian" ["ee"]=> string(3)"bao" } } array(2){ ["a"]=> string(5)"2_AAA" ["b"]=> array(3){ ["cc"]=> string(7)"wen_AAA" ["dd"]=> string(8)"jian_AAA" ["ee"]=> string(7)"bao_AAA" } }

  


延伸阅读:

PHP数组函数大全
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: