您好,UncleToo欢迎您!  为了更好的浏览本站,请使用高版本浏览器
RSS  Tag     设为首页 | 加入收藏
 您所在的位置:首页 > PHP技术 > PHP应用

PHP教程:读取树状数据的方法

作者:未知  来源:转载  日期:2015-01-29 22:54:21
收藏  评论:( 0 )  阅读:374

一般在读取用“邻接列表算法”组织的数据时,需要使用递归逐层读取

或者读取数据到数组,然后用递归或非递归的方法再行处理

这里介绍一种边读边生成“树状”数组的方法,希望对你有用

mysql_connect();
                                                
//测试数据
$sql =<<< SQL
select * from (
  select '1' as id, '0' as pid, 'Food' as title
  union all select '2', '1', 'Fruit'
  union all select '3', '2', 'Red'
  union all select '4', '3', 'Cherry'
  union all select '5', '2', 'Yellow'
  union all select '6', '5', 'Banana'
  union all select '7', '1', 'Meat'
  union all select '8', '7', 'Beef'
  union all select '9', '7', 'Pork'
  ) t
  order by pid, id
SQL;
                                                
$rs = mysql_query($sql);
                                                
$res = array(); //结果数组
$ind = array(); //索引数组
while($row = mysql_fetch_assoc($rs)) {
  list($id, $pid) = array_values($row);
  $ind[$id] = $row;
  if(isset($ind[$pid])) $ind[$pid]['child'][$id] =& $ind[$id]; //构造索引
  if($pid == 0) $res[$id] =& $ind[$id]; //转存根节点组
}
                                                
echo '<xmp>' . print_r($res, 1);


输出结果如下:

Array

(

   [1] => Array

       (

           [id] => 1

           [pid] => 0

           [title] => Food

           [child] => Array

               (

                   [2] => Array

                       (

                           [id] => 2

                           [pid] => 1

                           [title] => Fruit

                           [child] => Array

                               (

                                   [3] => Array

                                       (

                                           [id] => 3

                                           [pid] => 2

                                           [title] => Red

                                           [child] => Array

                                               (

                                                   [4] => Array

                                                       (

                                                           [id] => 4

                                                           [pid] => 3

                                                           [title] => Cherry

                                                       )

                                               )

                                       )

                                   [5] => Array

                                       (

                                           [id] => 5

                                           [pid] => 2

                                           [title] => Yellow

                                           [child] => Array

                                               (

                                                   [6] => Array

                                                       (

                                                           [id] => 6

                                                           [pid] => 5

                                                           [title] => Banana

                                                       )

                                               )

                                       )

                               )

                       )

                   [7] => Array

                       (

                           [id] => 7

                           [pid] => 1

                           [title] => Meat

                           [child] => Array

                               (

                                   [8] => Array

                                       (

                                           [id] => 8

                                           [pid] => 7

                                           [title] => Beef

                                       )

                                   [9] => Array

                                       (

                                           [id] => 9

                                           [pid] => 7

                                           [title] => Pork

                                       )

                               )

                       )

               )

       )

)





除非特别声明,本站所有PHP教程及其他教程/文章均为原创、翻译或网友投稿,版权均归UncleToo中文网所有, 转载请注明作者及出处。
原文网址:http://www.uncletoo.com/html/application/1104.html
读完这篇文章后,你是否有所收获? 分享是一种生活的信念!
  • 0
  • 0
我来说两句
更多>>网友评论