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

时间:2014-03-14 11:59:57

标签: php foreach

我正在编写导航菜单并被卡住了。

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

      };   
   ?>

1 个答案:

答案 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
      }
}

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