【发布时间】:2013-04-21 15:23:18
【问题描述】:
因此,作为示例,我在网站中使用了这种结构。问题是我必须在下拉列表中获取这些项目,但它们必须基于其父项。
- loadSubItems(id) 返回 id 的子项。
- loadSubItems(0) 将给出根的子项,在本例中为 9、16、20
- loadSubItems(9) 将给出一个空数组 loadSubItems(16) 将返回 17、18、19
问题在于,只要该级别有子项,中间循环(foreach)就必须继续循环,打印它们并且必须为每个级别添加一个额外的意图“_”。
我已经尝试解决这个问题好几个小时了,但我已经失去了思考,我似乎无法弄清楚必须发生什么才能做到这一点。
欢迎任何帮助!提前致谢:
下面的测试数据:
我正在使用以下代码进入第二级:
$items = loadSubItems(0); // returns 9 16 20
$intend = "";
foreach($items as $item) {
$subitems = loadSubItems($item);
if(count($subitems) > 0) {
echo $intend.$item." has subitems: <br />";
$intend .= "_";
foreach($subitems as $subitem) {
echo $intend.$subitem."<br />";
}
} else {
echo "<br />".$item." has no subitems <br />";
}
}
这段代码有输出:
9 has no subitems
16 has subitems:
_17
_18
_19
20 has no subitems
编辑:所以我想要的结果是:
9 has no subitems 16 has subitems: _17 __21 ___22 __23 ___24 _18 _19 20 has no subitems
【问题讨论】:
-
大多数人会浏览您的代码以寻找 a question 正确的问号(可能还有粗体字)和代码,所以我建议您问一个简洁的问题得到好的答案。
-
@FrankPresenciaFandos 我的猜测是,他正在寻找递归函数,但很难说..
-
基本上你在看一个多维数组。看看array_walk_recursive()
-
编辑了我的帖子并添加了我想要的输出。所以函数必须循环几次才能达到这个目的。谢谢你的链接,我现在得去健身房,等我回来看看!欣赏它
-
@FrankPresenciaFandos 这就是我在这里的原因。我当然可以将它硬编码为固定数量的级别。但问题是这段代码必须在哪里实现,我不知道会有多少层。所以我希望递归方法可以解决这个问题:-)