[align=center][align=left][color=rgb(51, 51, 51)][font=-apple-system-font, BlinkMacSystemFont, "][size=17px]无限级分类是开发中常见的情况,也经常会在面试,主考官问到,笔试中遇到,因此本文对常见的无限极分类算法进行总结归纳,其实大多数就是迭代与递归。[/size][/font][/color][/align][align=left][color=rgb(51, 51, 51)][font=-apple-system-font, BlinkMacSystemFont, "][size=17px][b]1.循环迭代实现[/b][/size][/font][/color][/align]$arr = [
[color=rgb(174, 135, 250)]1[/color]=>[[color=rgb(238, 220, 112)]'id'[/color]=>[color=rgb(174, 135, 250)]1[/color],[color=rgb(238, 220, 112)]'name'[/color]=>[color=rgb(238, 220, 112)]'父1'[/color],[color=rgb(238, 220, 112)]'father'[/color]=>[color=rgb(248, 35, 117)]NULL[/color]],
[color=rgb(174, 135, 250)]2[/color]=>[[color=rgb(238, 220, 112)]'id'[/color]=>[color=rgb(174, 135, 250)]2[/color],[color=rgb(238, 220, 112)]'name'[/color]=>[color=rgb(238, 220, 112)]'父2'[/color],[color=rgb(238, 220, 112)]'father'[/color]=>[color=rgb(248, 35, 117)]NULL[/color]],
[color=rgb(174, 135, 250)]3[/color]=>[[color=rgb(238, 220, 112)]'id'[/color]=>[color=rgb(174, 135, 250)]3[/color],[color=rgb(238, 220, 112)]'name'[/color]=>[color=rgb(238, 220, 112)]'父3'[/color],[color=rgb(238, 220, 112)]'father'[/color]=>[color=rgb(248, 35, 117)]NULL[/color]],
[color=rgb(174, 135, 250)]4[/color]=>[[color=rgb(238, 220, 112)]'id'[/color]=>[color=rgb(174, 135, 250)]4[/color],[color=rgb(238, 220, 112)]'name'[/color]=>[color=rgb(238, 220, 112)]'儿1-1'[/color],[color=rgb(238, 220, 112)]'father'[/color]=>[color=rgb(174, 135, 250)]1[/color]],
[color=rgb(174, 135, 250)]5[/color]=>[[color=rgb(238, 220, 112)]'id'[/color]=>[color=rgb(174, 135, 250)]5[/color],[color=rgb(238, 220, 112)]'name'[/color]=>[color=rgb(238, 220, 112)]'儿1-2'[/color],[color=rgb(238, 220, 112)]'father'[/color]=>[color=rgb(174, 135, 250)]1[/color]],
[color=rgb(174, 135, 250)]6[/color]=>[[color=rgb(238, 220, 112)]'id'[/color]=>[color=rgb(174, 135, 250)]6[/color],[color=rgb(238, 220, 112)]'name'[/color]=>[color=rgb(238, 220, 112)]'儿1-3'[/color],[color=rgb(238, 220, 112)]'father'[/color]=>[color=rgb(174, 135, 250)]1[/color]],
[color=rgb(174, 135, 250)]7[/color]=>[[color=rgb(238, 220, 112)]'id'[/color]=>[color=rgb(174, 135, 250)]7[/color],[color=rgb(238, 220, 112)]'name'[/color]=>[color=rgb(238, 220, 112)]'儿2-1'[/color],[color=rgb(238, 220, 112)]'father'[/color]=>[color=rgb(174, 135, 250)]2[/color]],
[color=rgb(174, 135, 250)]8[/color]=>[[color=rgb(238, 220, 112)]'id'[/color]=>[color=rgb(174, 135, 250)]8[/color],[color=rgb(238, 220, 112)]'name'[/color]=>[color=rgb(238, 220, 112)]'儿2-1'[/color],[color=rgb(238, 220, 112)]'father'[/color]=>[color=rgb(174, 135, 250)]2[/color]],
[color=rgb(174, 135, 250)]9[/color]=>[[color=rgb(238, 220, 112)]'id'[/color]=>[color=rgb(174, 135, 250)]9[/color],[color=rgb(238, 220, 112)]'name'[/color]=>[color=rgb(238, 220, 112)]'儿3-1'[/color],[color=rgb(238, 220, 112)]'father'[/color]=>[color=rgb(174, 135, 250)]3[/color]],
[color=rgb(174, 135, 250)]10[/color]=>[[color=rgb(238, 220, 112)]'id'[/color]=>[color=rgb(174, 135, 250)]10[/color],[color=rgb(238, 220, 112)]'name'[/color]=>[color=rgb(238, 220, 112)]'儿3-1-1'[/color],[color=rgb(238, 220, 112)]'father'[/color]=>[color=rgb(174, 135, 250)]9[/color]],
[color=rgb(174, 135, 250)]11[/color]=>[[color=rgb(238, 220, 112)]'id'[/color]=>[color=rgb(174, 135, 250)]11[/color],[color=rgb(238, 220, 112)]'name'[/color]=>[color=rgb(238, 220, 112)]'儿1-1-1'[/color],[color=rgb(238, 220, 112)]'father'[/color]=>[color=rgb(174, 135, 250)]4[/color]],
[color=rgb(174, 135, 250)]12[/color]=>[[color=rgb(238, 220, 112)]'id'[/color]=>[color=rgb(174, 135, 250)]12[/color],[color=rgb(238, 220, 112)]'name'[/color]=>[color=rgb(238, 220, 112)]'儿2-1-1'[/color],[color=rgb(238, 220, 112)]'father'[/color]=>[color=rgb(174, 135, 250)]7[/color]],
];
[color=rgb(248, 35, 117)]function generateTree($items)[/color]{
$tree = [color=rgb(248, 35, 117)]array[/color]();
[color=rgb(248, 35, 117)]foreach[/color]($items as $item){
[color=rgb(248, 35, 117)]if[/color]([color=rgb(248, 35, 117)]isset[/color]($items[$item[[color=rgb(238, 220, 112)]'father'[/color]]])){
$items[$item[[color=rgb(238, 220, 112)]'father'[/color]]][[color=rgb(238, 220, 112)]'son'[/color]][] = &$items[$item[[color=rgb(238, 220, 112)]'id'[/color]]];
}[color=rgb(248, 35, 117)]else[/color]{
$tree[] = &$items[$item[[color=rgb(238, 220, 112)]'id'[/color]]];
}
}
[color=rgb(248, 35, 117)]return[/color] $tree;
}
$tree = generateTree($arr);
print_r(json_encode($tree));
无限极分类算法,你必须要知道!
[/align]
|
|