解析PHP菜单系统3d数组。修改以允许我指定父页面和返回子页面

解析PHP菜单系统3d数组。修改以允许我指定父页面和返回子页面,php,menu,multidimensional-array,recursive-query,Php,Menu,Multidimensional Array,Recursive Query,我构建了一个阵列,其中包含一个网站菜单系统: 我使用下面的函数来解析菜单系统,并将其作为嵌套无序列表输出 我陷入困境的地方是,我现在想修改函数,这样我就可以传入父页面并只返回该父页面的子页面 比如: 函数构建菜单$Menu\U数组,$is\U子,“第2页”{ ... } 这将产生以下输出: Page 2 Sub Page 1 或 函数构建菜单$Menu\U数组,$is\U子,“第3页”{ ... } 这将产生: Page 3 Sub Page 2 Sub Page 3

我构建了一个阵列,其中包含一个网站菜单系统:

我使用下面的函数来解析菜单系统,并将其作为嵌套无序列表输出

我陷入困境的地方是,我现在想修改函数,这样我就可以传入父页面并只返回该父页面的子页面

比如:

函数构建菜单$Menu\U数组,$is\U子,“第2页”{ ... }

这将产生以下输出:

Page 2
    Sub Page 1

函数构建菜单$Menu\U数组,$is\U子,“第3页”{ ... }

这将产生:

Page 3
    Sub Page 2
    Sub Page 3
重要的是,函数保持递归,这样无论有多少子级别,它们都将作为函数的一部分输出。计划是每个页面的显示值将是唯一标识符

如果有任何帮助,我将不胜感激,因为我已经绕圈子转了好几个小时了


非常感谢,詹姆斯。

这看起来有点像是重新发明了轮子。您可能希望使用您选择的搜索引擎来查找php树结构,或者查看SPL中的堆和双链接列表

你就不能这样做吗

function Build_Sub_Menu($menu, $key) {
   return Build_Menu(array($menu[$key]), false);
}

echo Build_Sub_Menu($menu, 'Page_2');
当然,您可以在Build_菜单中执行相同的操作,但我认为另一个功能更易于理解和维护


由您验证$menu中是否存在$key。

这对于从顶部开始的一个级别非常有效,谢谢。当我进入一个有更多关卡的菜单系统时,它就会下降。e、 g.第1页第2子页第1页第3子页第2子页第3子页第4子页第5子页构建菜单$Menu,“子菜单第3页”;
Page 2
    Sub Page 1
Page 3
    Sub Page 2
    Sub Page 3
function Build_Sub_Menu($menu, $key) {
   return Build_Menu(array($menu[$key]), false);
}

echo Build_Sub_Menu($menu, 'Page_2');