【技术宅6】把一个无限级分类循环成tree结构


function list_to_tree($list,$root=0,$pk='cid',$pid = 'pid',$child = '_child'){

    if(is_array($list)) {

        // 创建基于主键的数组引用

        foreach ($list as $key => $data) {

            $refer[$data[$pk]] =& $list[$key];

        }

        foreach ($list as $key => $data) {

            // 判断是否存在parent

            $parentId = $data[$pid];

            if ($root == $parentId) {

                $tree[$list[$key][$pk]] =& $list[$key];

            }else{

                if (isset($refer[$parentId])) {

                    $parent =& $refer[$parentId];

                    $parent[$child][$list[$key][$pk]] =& $list[$key];

                }

            }

        }

    }

    return $tree;

}

  

  //链接数据库

       $con = mysql_connect("localhost", "root", "123456");

       if (!$con){

              die('Could not connect: ' . mysql_error());

       }

       //选择数据库

       $db_selected = mysql_select_db("newasf04",$con);

       //设置数据库编码

       mysql_query("set names 'utf8'");

       //sql语句

       $sql = "SELECT cid,pid,name from asf_mall_category";

       //执行sql语句

       $result = mysql_query($sql);

      

       //把查询结果放到一个数组中

       while ($row=mysql_fetch_assoc($result)){        

               $arr[]=$row;

       }    

       // 释放资源

       mysql_free_result($result);

       // 关闭连接

       mysql_close(); 

      

       $newarr=list_to_tree($arr);

       print_r($newarr);

      

你可能感兴趣的:(tree)