有没有办法用键来展平多维(最多1到3级)?
我有这样的数组
array(
'Orange',
'Grape',
'Banana' => array(
'Big',
'Small'
),
'Apple' => array(
'Red',
'Green' => array(
'Soft',
'Hard'
)
)
);
我希望它像这样
array(
'Orange',
'Grape',
'Banana',
'Big',
'Small',
'Apple',
'Red',
'Green',
'Soft',
'Hard'
);
因此它将保持外观的顺序,以便最近使用array_keys获取索引.
我已经尝试了几种方法,但如果数组元素是新数组的键,它不会被展平,只是跳过,所以我的最终数组看起来像这样
array:7 [▼
0 => "Orange"
1 => "Grape"
2 => "Big"
3 => "Small"
4 => "Red"
5 => "Soft"
6 => "Hard"
]
最佳答案 您可以为此编写递归函数:
$nested = array(
'Orange',
'Grape',
'Banana' => array(
'Big',
'Small'
),
'Apple' => array(
'Red',
'Green' => array(
'Soft',
'Hard'
)
)
);
function flattern($array)
{
$flat=[];
foreach($array as $key=>$val){
if(is_array($val)){
$flat[]=$key;
$flat = array_merge($flat, flattern($val));
}else{
$flat[]=$val;
}
}
return $flat;
}
var_dump(flattern($nested));