为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
MMTTMM 2021-04-26 13:29:23
我正在从数据库中构建递归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 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

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


    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>';

                  }


              }

           }


查看完整回答
反对 回复 2021-05-14
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

如果你空了,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。检查这些值,您将解决您的问题。或者给我们一个您的数组的例子,以便我们检查它们。


查看完整回答
反对 回复 2021-05-14
  • 2 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信