php無限分類

關於無限分類是在兄弟連的視頻中看過,知道基本思想,感覺很簡單,自己肯定會;經過電魂筆試後,才發現看似簡單的題目不經過自己親自做一遍,是不知道自己是不是真正會做。

基本思想是用遞歸實現,但是就這麼個簡單的算法我調試了一個上午(用PHP寫的),始終沒找到自己的錯誤,最後才發現是因爲var_dump()打印數組的時候,當數組過多或者維度過大的時候,會以...號取代,也就是不顯示,我一直以爲...是空數組的意思,真是無語。在網上找到了完全顯示的方法,下面貼下鏈接:

http://blog.sina.com.cn/s/blog_461c24d50101h62x.html


1.數據庫的設計:

至少三個字段(id,pid,name),下面是我的數據庫設計


2.接下來就是PHP代碼部分:

<?php 
    $link=mysql_connect("localhost","root","");
    mysql_select_db("test",$link);
    
    $sql="select * from classfiy where id";
    $result=mysql_query($sql);
    $assoc=array();
    while($row=mysql_fetch_assoc($result))
    {
        array_push($assoc,$row);
    }
    $a=fun($assoc,0);
    $str=print_fun($a);
    echo $str;
  
    //打印分類
    function print_fun($assoc)
    {
        $str="<ul>";
        foreach($assoc as $key=>$value)
        {
            $str.="<li>".$value["name"]."</li>";
            if(!empty($value["list"]))
                $str.=print_fun($value["list"]);
        }
        $str.="</ul>";
        return $str;
    }
    
    //遞歸實現分類
    function fun($assoc,$id)
    {
        $temp=array();
        foreach($assoc as $key=>$value)
        {
            if($value["pid"]==$id)
            {
                $assoc[$key]["list"]=array();
                $assoc[$key]["list"]=fun($assoc,$value["id"]);
                array_push($temp,$assoc[$key]);
            }
        }
        return $temp;
    }
?>

3.查看結果:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章