在PHP中从数据库中获取二维数组

时间:2015-02-27 08:50:47

标签: php mysql recursion

这是PHP中的遗传评论系统,使用数组$datas进行递归函数,

<?php
   $datas = array(
      array('id' => 1, 'parent' => 0, 'name' => 'Page 1'),
      array('id' => 2, 'parent' => 1, 'name' => 'Page 1.1'),
      array('id' => 3, 'parent' => 2, 'name' => 'Page 1.1.1'),
      array('id' => 4, 'parent' => 3, 'name' => 'Page 1.1.1.1'),
      array('id' => 5, 'parent' => 3, 'name' => 'Page 1.1.1.2'),
      array('id' => 6, 'parent' => 1, 'name' => 'Page 1.2'),
      array('id' => 7, 'parent' => 6, 'name' => 'Page 1.2.1'),
      array('id' => 8, 'parent' => 0, 'name' => 'Page 2'),
      array('id' => 9, 'parent' => 0, 'name' => 'Page 3'),
      array('id' => 10, 'parent' => 9, 'name' => 'Page 3.1'),
      array('id' => 11, 'parent' => 9, 'name' => 'Page 3.2'),
      array('id' => 12, 'parent' => 11, 'name' => 'Page 3.2.1'),
      array('id' => 13, 'parent' => 5, 'name' => 'Page 1.1.1.2.1'),
   );


function generatePageTree($datas, $parent = 0, $limit=0) {
   if($limit > 1000) return '';
   $tree = '<ul>';
   for($i=0, $ni=count($datas); $i < $ni; $i++) {
      if($datas[$i]['parent'] == $parent) {
         $tree .= '<li>';
         $tree .= $datas[$i]['name'];
         $tree .= generatePageTree($datas, $datas[$i]['id'], $limit++);
         $tree .= '</li>';
      }
   }
   $tree .= '</ul>';
   return $tree;
}
echo(generatePageTree($datas));
?>

这就是我从数据库中获取与$datas完全相同的二维数组的方法。

$datas = mysql_query("SELECT * FROM hdata ORDER BY id ASC");
while($line=mysql_fetch_array($data)) {    
   $results[]=array('id'=>$line['id'],'parent'=>$line['parent'],'name'=>$line['name']);
   var_dump($results);  
}

它不起作用。

1 个答案:

答案 0 :(得分:1)

我通过一点改变解决了这个问题,

$data = mysql_query("SELECT * FROM hdata ORDER BY id ASC");
while($line=mysql_fetch_array($data)) {    
$results[]=array('id'=>$line['id'],'parent'=>$line['parent'],'name'=>$line['name']);
}
var_dump($results);