PHP递归函数为空<ul> </ul>问题

时间:2019-04-24 07:31:22

标签: php recursion

我正在从数据库中构建递归php菜单功能。

我的联系人:

 $menu = $vt->prepare("SELECT * FROM menus");
 $menu->execute(array());
 $menuSonuc = $menu->fetchAll(PDO::FETCH_OBJ);

此函数生成空ul。

<li>
 <a href=""><span class="sagok"></span>TITLE</a>
 <ul></ul>
</li>

我的问题: 如何防止此功能中的空ul?

echo '<ul class="anamenu">';
           foreach ($menuSonuc as $menum) {




              if ($menum->katID == null) {

                 echo '<li><a href=""><span class="asagiok"></span>' . $menum->baslik . '</a>';
                 $id = $menum->id;
                 kategoriler($menuSonuc, $id);
                 echo '</li>';
              }
           }
           echo '</ul>';


           function kategoriler($menuSonuc, $id)
           {
              echo '<ul>';
              foreach ($menuSonuc as $menum) {
                 if ($menum->katID == $id) {
                    echo '<li><a href=""><span class="sagok"></span>' . $menum->baslik . '</a>';
                    kategoriler($menuSonuc, $menum->id);
                    echo '</li>';
                 }
              }
              echo '</ul>';
           }

2 个答案:

答案 0 :(得分:1)

如果ul为空,则表示$menuSonuc为空,并且不输入foreach。您可以检查其是否为空,以防止空ul

function kategoriler($menuSonuc, $id){
if(empty($menuSonuc)){
    return;
}

echo '<ul>';
foreach ($menuSonuc as $menum) {
    if ($menum->katID == $id) {
        echo '<li><a href=""><span class="sagok"></span>' . $menum->baslik . '</a>';
        kategoriler($menuSonuc, $menum->id);
        echo '</li>';
    }
}
echo '</ul>';
}

更新

如果您仍然得到空的ul,则问题出在您正在检查$menum->katID == $id的情况下。

这意味着$menum->katID$id从未相同。 检查这些值,您将解决您的问题。或者给我们一个您的数组的例子,以便我们检查它们。

答案 1 :(得分:0)

您必须添加一些检查,请参见下面的代码

    if(!empty($menuSonuc)){
    echo '<ul class="anamenu">';
           foreach ($menuSonuc as $menum) {




              if ($menum->katID == null) {

                 echo '<li><a href=""><span class="asagiok"></span>' . $menum->baslik . '</a>';
                 $id = $menum->id;
                 kategoriler($menuSonuc, $id);
                 echo '</li>';
              }
           }
    echo '</ul>';

}

function checkSub($menuSonuc, $id){
    foreach ($menuSonuc as $menum) {
         if ($menum->katID == $id) {
            return true;
         }
     }
     return false;
}
           function kategoriler($menuSonuc, $id)
           {
            if(!empty($menuSonuc)){
                  $index=0;
                  foreach ($menuSonuc as $menum) {
                     if ($menum->katID == $id) {
                        if($index==0){
                            echo '<ul>';
                        }
                        echo '<li><a href="">'.((checkSub($menuSonuc, $menum->id))?'<span class="sagok"></span>':''). $menum->baslik . '</a>';
                        kategoriler($menuSonuc, $menum->id);
                        echo '</li>';
                        $index++;
                     }
                  }
                  if($index>0){
                      echo '</ul>';
                  }

              }
           }