我正在写导航菜单,但是卡住了。
基本上我有一个foreach循环,如果页面id为0,则运行一些逻辑。该逻辑运行另一个foreach循环,检查当前页面是否有任何子页面。如果存在,则定义第三个foreach循环来检查当前子页是否存在子页。
我遇到的问题是,我需要第二个和第三个foreach循环来一次又一次地循环来检查子-子-子-页等等。因此,我已经将第三个foreach循环中的变量编写为与第一个foreach循环相同,目的是将第二个和第三个foreach循环放入一个函数中,然后插入函数buildMenu();在需要的地方,然后在函数内部调用它自己,这样它就可以不断地循环。
然而,似乎通过运行第三个foreach循环,for的值$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";
};
?>
为什么不能创建一个函数&递归调用它来获取页面的子页面?
我不太懂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
}
}
如果需要更多信息请告诉我…:)