本文章中,主要展示了两种方法来实现任意多为数组转为一维数组的方法。一个是递归,一个是利用PHP内置函数。
先设定一个数组:
$arr = [
'a' => [
'b' => ['c', 'd'],
'e' => ['f' => ['g'], 'h' => 'i']
],
'm' => 'n'
];
第一种方法:递归
function toOneArray($array)
{
static $res_arr = [];
foreach ($array as $v) {
if (is_array($v)) {
toOneArray($v);
} else {
$res_arr[] = $v;
}
}
return $res_arr;
}
echo '<pre>';
print_r(toOneArray($arr));
第二种方法:array_walk_recursice()
$res_arr = [];
array_walk_recursive($arr, function ($k) {
global $res_arr;
$res_arr[] = $k;
});
echo '<pre>';
print_r($res_arr);
以上两种方法得到的结果是一样的:
Array
(
[0] => c
[1] => d
[2] => g
[3] => i
[4] => n
)
至于第二种方法,还有一种写法,如下:
$res_arr = [];
array_walk_recursive($arr, function ($k) use (&$res_arr) {
$res_arr[] = $k;
return $res_arr;
});
echo '<pre>';
print_r($res_arr);
会得到一样的效果。但是一点要注意的是匿名函数中use()中的数组要加‘&’符号,&是引用的意思。(后面会写关于引用&的相关文章)
还有一些内置函数也是可以用的,比如:array_walk(),array_map(),array_reduce()大家自己下去尝试吧。
Ps:我搭建了个人网站:www.caohongyuan.cn,更多分享,欢迎点击浏览!谢谢。