我正在编写导航菜单并被卡住了。
基本上我有一个foreach循环,如果页面标识为0,则运行一些逻辑。 这个逻辑运行另一个foreach循环,检查当前页面是否有任何子页面。如果是这样,它定义了第三个foreach循环来检查当前子页面是否有任何子子页。
我遇到的问题是,我需要第二个和第三个foreach循环绕回来检查子子页面等等。所以我在第三个foreach循环中编写了与第一个foreach循环相同的变量,目的是将第二个和第三个foreach循环放入一个函数中,然后插入函数buildMenu();在需要的地方,然后在函数内部稍后调用它,以便它反复循环。
然而,似乎通过运行第三个foreach循环的值 $ b = $ childpage [' id']; 更改,以便当第二个foreach循环循环回来并尝试查看是否 $ c ==来自第一个foreach循环的$ b它不再起作用,因为该值已被第三个循环更改。
所以我的问题是我可以在第二个foreach循环中保持$ b的值,这样当第二个循环循环时,$ b仍然是第一个foreach循环设置的,但是也会改变$的值b在第三个循环中,以便在循环周期中使用新值。
希望这有意义,但代码在下面,所以希望你能看到我的意思。
如果不可能,那就更好了,我会非常感激! 感谢
<?php
function buildMenu2($allpages){
echo "<ul>\n";
foreach($allpages as $pageitem) {
$a = $pageitem['parentid'];
$b = $pageitem['id'];
if($a == 0){
echo "<li><a href=" . $pageitem['url'] . ">" . $pageitem['linklabel'] . "</a>";
echo "<ul>\n";
foreach($allpages as $childpage) {
$c = $childpage['parentid'];
$d = $childpage['id'];
if ($c == $b){
echo "<li><a href=" . $childpage['url'] . ">" . $childpage['linklabel'] . "</a>";
echo "<ul>\n";
foreach ($allpages as $childpage) {
$a = $childpage['parentid'];
$b = $childpage['id'];
if ($a == $d) {
echo "<li><a href=" . $childpage['url'] . ">" . $childpage['linklabel'] . "</a>";
echo "</li>";
};
};
echo "</ul>\n";
echo "</li>";
};
};
echo "</ul>\n";
echo "</li></br><br/><br/>";
};
};
echo "</ul>\n";
};
?>
答案 0 :(得分:0)
为什么你不能创建一个功能&amp;递归调用它来获取页面的子页面?
我不太了解php,但会给你伪代码..希望它可以帮到你
myRecursiveFunction(page)
{
if (page.subpage!=nil) // checks if subpages are there
{
for each subpage in page.subpage
{
myRecursiveFunction(subpage);
}
}
else{
//write your logic here.. may be to get URL of the page
}
}
如果需要更多信息,请告诉我...... :)