Foreach循环中的Foreach循环不情愿地改变变量值


foreach loop within foreach loop changes variable value unwillingly

我正在写导航菜单,但是卡住了。

基本上我有一个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
      }
}

如果需要更多信息请告诉我…:)