两种方法实现:
一、function generateTree($array,$pid=0,$level=0){
$arr = array();foreach($array as $v){
if($v['pid']==$pid){
$v['level'] = $level;
$v['html'] = str_repeat('--',$level);
$arr[] = $v;
$arr = array_merge($arr,generateTree($array,$v['f_id'],$level+1));
}
}
return $arr;
}
$dbh = new PDO('mysql:host=127.0.0.1;dbname=package', 'root', ' ');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->exec('set names utf8');
$sql = "select * from floder_package";
$items = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
print_r(generateTree($items));
二、 function generateTree($val){
foreach ($val as $item) {
$val[$item['pid']]['son'][$item['f_id']] = &$val[$item['f_id']];
}
return isset($val[0]['son']) ? $val[0]['son'] : array();
}
$dbh = new PDO('mysql:host=127.0.0.1;dbname=package', 'root', ’ ');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->exec('set names utf8');
$sql = "select * from table";
$items = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
foreach ($items as $key => $value) {
$val[$value['f_id']] = $value;
}
print_r(generateTree($val));
注:第二种方法的数组的key需与唯一id一致;代码中有代码参考