ホームページ > バックエンド開発 > PHPチュートリアル > 再帰的ディレクトリ ツリー、UL LI の適用方法

再帰的ディレクトリ ツリー、UL LI の適用方法

WBOY
リリース: 2016-06-23 14:05:43
オリジナル
943 人が閲覧しました

function nav($parent){
$sql = mysql_query("select * from menu where parent = '$parent'");
while($row = mysql_fetch_array($sql)){
echo '

  • '.$row['name']。 '';
    nav($row['id']);
    echo '
  • ';

    }
    }

    子类要怎么套上UL输出呢?

    似たような这样




    回复讨论(解决方案)

    function nav($parent){  $sql = mysql_query("select * from menu where parent = '$parent'");  while($row = mysql_fetch_array($sql)){    echo '<li><a href="'.$row['id'].'">'.$row['name'].'</a>';    echo '<ul>';    nav($row['id']);    echo '</ul>';    echo '</li>';  }}
    ログイン後にコピー

    在ナビゲーション関数内に直接出力されているため、子节点がない場合、会生空の
      < ;/ul>
      不过并不影响显示效果

      就是会影响啊 我前端是折叠菜单 UL 表示ブロック的時間就麻烦了

      网上找了一夜 中文英文 测试無数 就没有一个完全美的 要么连データベース库封包成类没法用 要么UL適合套错误

      要么遍历N次 要么几百行代码 着都笨ゆっくり


      不知道大牛们是怎么解决的,就没一完美的办法?

      请版主老大ハンドル你常用的代分享下

      你边查询边输出,而今你就無法知道当前节点有子节点(因為未读)
      所以念要查询結果读到数组 http://bbs.csdn.net /topics/390364669
      その後再递归出力

      你も可用变量缓存待機出力内容,等递归结終了時点再出力

      function nav($parent){  $res = '';  $sql = mysql_query("select * from menu where parent = '$parent'");  while($row = mysql_fetch_array($sql)){    $res .= '<li><a href="'.$row['id'].'">'.$row['name'].'</a>';    $t = nav($row['id']);    if(! empty($t)) $res .= "<ul>$t</ul>";    $res .= '</li>';  }  return $res;}
      ログイン後にコピー

      调用時間
      echo nav($id);

      我都は ajax で自動的に追加されているため、問題はありません。

    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート