递归无限分类树,如何控制深度

WBOY
リリース: 2016-06-13 11:53:56
オリジナル
1505 人が閲覧しました

递归无限分类树,怎么控制深度?

本帖最后由 XingGuangYingYing 于 2014-03-19 02:52:34 编辑 代码如下,如 echo nav(0,0); 就像是全部   nav(0,1);就显示一级  $deep 应该怎么判断呢?

另外,递归效率是个问题,可否一次性从数据库取出来,然后数组变啊变的  输出树形目录呢  用ul li包围

function nav($parent,$deep){
$res = '';
  $sql = mysql_query("SELECT * from menu where parent = $parent  order by ordering DESC");

  while($row = mysql_fetch_array($sql)){
  
  $res .= '
  • '.$row['cname'].'';
     
        $t = nav($row['id'],$deep); 
        $res .= '
      '.$t.'
    ';


        $res .= '
  • ';
      }
      return $res;
    }


    }
    ------解决方案--------------------
    引用传递

    $deep = 0;
    function nav($parent,&$deep){
     $depp++;
    }
    ------解决方案--------------------
    深度控制可以定义一个静态变量,每次执行一次递增,如果$deep大于0且等于静态变量的值,则不再继续递归。
    関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート