原数组:
$arr = [
[
'id' => 1,
'pid' => 0,
'level' => 1,
'title' => 'id1',
'hassub' => 1
],
[
'id' => 2,
'pid' => 1,
'level' => 2,
'title' => 'id2',
'hassub' => 1,
],
[
'id' => 3,
'pid' => 2,
'level' => 3,
'title' => 'id3',
'hassub' => 0
],
[
'id' => 4,
'pid' => 0,
'level' => 1,
'title' => 'id4',
'hassub' => 1
],
[
'id' => 5,
'pid' => 4,
'level' => 2,
'title' => 'id5',
'hassub' => 0
],
[
'id' => 6,
'pid' => 2,
'level' => 3,
'title' => 'id6',
'hassub' => 1
],
[
'id' => 7,
'pid' => 6,
'level' => 4,
'title' => 'id7',
'hassub' => 0
],
];
通过递归:
function arrRec($arr, $pid = 0) {
$res = [];
foreach ($arr as $v) {
if ($pid == $v['pid']) {
$v['children'] = arrRec($arr, $v['id']);
$res[] = $v;
}
}
return $res;
}
可以获得
Array
(
[0] => Array
(
[id] => 1
[pid] => 0
[level] => 1
[title] => id1
[hassub] => 1
[children] => Array
(
[0] => Array
(
[id] => 2
[pid] => 1
[level] => 2
[title] => id2
[hassub] => 1
[children] => Array
(
[0] => Array
(
[id] => 3
[pid] => 2
[level] => 3
[title] => id3
[hassub] => 0
[children] => Array
(
)
)
[1] => Array
(
[id] => 6
[pid] => 2
[level] => 3
[title] => id6
[hassub] => 1
[children] => Array
(
[0] => Array
(
[id] => 7
[pid] => 6
[level] => 4
[title] => id7
[hassub] => 0
[children] => Array
(
)
)
)
)
)
)
)
)
[1] => Array
(
[id] => 4
[pid] => 0
[level] => 1
[title] => id4
[hassub] => 1
[children] => Array
(
[0] => Array
(
[id] => 5
[pid] => 4
[level] => 2
[title] => id5
[hassub] => 0
[children] => Array
(
)
)
)
)
)
现在的问题是需要另外一种结构,只需要顶层节点和所有最底层节点,跳过中间节点,结构如下:Array
(
[0] => Array
(
[id] => 1
[pid] => 0
[level] => 1
[title] => id1
[hassub] => 1
[children] => Array
(
[0] => Array
(
[id] => 3
[pid] => 2
[level] => 3
[title] => id3
[hassub] => 0
[children] => Array
(
)
)
[1] => Array
(
[id] => 7
[pid] => 6
[level] => 4
[title] => id7
[hassub] => 0
[children] => Array
(
)
)
)
)
[1] => Array
(
[id] => 4
[pid] => 0
[level] => 1
[title] => id4
[hassub] => 1
[children] => Array
(
[0] => Array
(
[id] => 5
[pid] => 4
[level] => 2
[title] => id5
[hassub] => 0
[children] => Array
(
)
)
)
)
)
试了几种方法,没有实现,想请教下各位,这种应该如何实现,谢谢?