【发布时间】:2019-11-30 12:46:17
【问题描述】:
我正在制作一个用于创建导航菜单的模块,我想提供设置初始和最终级别的可能性。我有这个具有级别的数组树如何返回它设置开始级别和停止级别?这是我返回空的函数。
原始数组:
Array
(
[0] => Array
(
[id] => 22
[pid] => 12
[level] => 0
[children] =>
)
[1] => Array
(
[id] => 24
[pid] => 12
[level] => 0
[children] => Array
(
[0] => Array
(
[id] => 27
[pid] => 24
[level] => 1
[children] => Array
(
[0] => Array
(
[id] => 28
[pid] => 27
[level] => 2
[children] =>
)
)
)
)
)
[2] => Array
(
[id] => 25
[pid] => 12
[level] => 0
[children] =>
)
[3] => Array
(
[id] => 26
[pid] => 12
[level] => 0
[children] =>
)
)
我的功能:
function get_tree_limit ($pages, $start_level, $stop_level) {
$result = Array();
foreach( $pages as $page ) {
$children = Array();
if(isset($page['children'])){
$children = get_tree_limit ($page['children'], $start_level, $stop_level);
}
if($page['level'] >= $start_level && $page['level'] <= $stop_level){
$result[] = Array(
'id' => $page['id'], 'pid' => $page['pid'], 'level' => $page['level'],
'children' => $children
);
}
}
return $result;
}
如果我尝试:
$rpage = get_tree_limit ($pages, 1, 2);
print_r($rpage);
结果为空:
Array()
我哪里错了?
谢谢。
【问题讨论】:
-
问题是在级别 0,虽然你设置了
$children- 你永远不会在任何地方添加它来返回。 -
@NigelRen 如果没有孩子,则应将数组返回为空。如果我删除条件开始和停止水平返回正确。但是粗略地说,我的概念是错误的,或者我解决了自己的问题。你能写出正确的函数还是难以理解。谢谢。
-
$pages 中有什么?
-
@ShringirajDewangan $pages of rough 是您可以在帖子顶部看到的原始数组。
-
$result 变量的范围仅在函数中,返回值仅适用于键 0,您的起始级别为 1