/**
* 多维数组转换成以为数组输出
* 例如:
* arr[
* '张三'=>[
* '李四' => null,
* '王五' => [
* '刘三' => null,
* '李白' => null,
* ],
* ],
* '可乐'=>[
* '山楂' => null,
* '水果' => [
* '梨' => [
* '酥梨'=>null,
* '雪花梨' => null,
* ],
* '香蕉' => null,
* ],
* ],
*
* 输出结果为:
* 张三:李四,王五,刘三,李白
* 李四:
* 王五:刘三,李白
* 刘三:
* 李白:
* 可乐:山楂,水果,梨,酥梨,雪花梨,香蕉
* 山楂:
* 水果:梨,酥梨,雪花梨,香蕉
* 梨:酥梨,雪花梨
* 酥梨:
* 雪花梨:
* 香蕉:
**/
$arr = [
'张三' => [
'李四' => null,
'王五' => [
'小白' => null,
'小美' => null,
],
],
'六六' => [
'菠萝' => null,
'水果' => [
'苹果' => null,
'瓜' => [
'西瓜' => null,
'南瓜' => null,
],
'葡萄' => null,
],
],
];
$res = [];
bbc($arr, $res);
print_r($res);
function bbc($v,&$isArr,$k=[]){
$c = 0;
$max_depth = array_depth($v);
foreach ($v as $key => $value) {
if(!$k){
$isArr[$key] = $key.':';
}else{
foreach ($k as $v1) {
$isArr[$key] = $key.':';
$isArr[$v1] .= $key.',';
}
}
if($value && is_array($value)){
$c++;
$k[] = $key;
bbc($value,$isArr,$k);
$k=[];
}
}
if($c == $max_depth){
foreach ($v as $key => $value) {
unset($isArr[$key]);
}
}
}
//计算数组的深度
function array_depth($arr) {
$max_depth = 1;
foreach ($arr as $value) {
if (is_array($value)) {
$depth = array_depth($value) + 1;
if ($depth > $max_depth) {
$max_depth = $depth;
}
}
}
return $max_depth;
}