我有这个多维数组:
$array = array(
'user1' => array('Miguel'),
'user2' => array('Miguel', 'Borges', 'João'),
'user3' => array(
'Sara',
'Tiago' => array('Male')
)
);
我希望它变平,转化为:
$new_array = array(
'user1.Miguel',
'user2.Miguel',
'user2.Borges',
'user2.João',
'user3.Sara',
'user3.Tiago.Male',
);
重要:
谢谢!
答案 0 :(得分:3)
虽然在你的问题中没有明确说明,但似乎你需要连接字符串键并忽略整数键(可以用is_string($key)
轻松实现)。因为你需要你的代码“使用任何级别的嵌套”,递归函数最适合你的目的:
function array_flatten_key($arr){
$_arr = array();
foreach($arr as $key => $val){
if(is_array($val)){
foreach(array_flatten_key($val) as $_val){
$_arr[] = is_string($key) ? $key.".".$_val : $_val;
}
}
else{
$_arr[] = is_string($key) ? $key.".".$val : $val;
}
}
return $_arr;
}
$new_array = array_flatten_key($array);
print_r($new_array);
输出将是:
Array
(
[0] => user1.Miguel
[1] => user2.Miguel
[2] => user2.Borges
[3] => user2.João
[4] => user3.Sara
[5] => user3.Tiago.Male
)