數(shù)據(jù)庫(kù)文件xd_item:
id pid item lead ...
1 0 標(biāo)題名稱一
2 0 標(biāo)題名稱二
3 1 中標(biāo)題名稱1-1
4 1 中標(biāo)題名稱1-2
5 2 中標(biāo)題名稱2-1
6 2 中標(biāo)題名稱2-2
8 3 小標(biāo)題名稱1-1-1
9 6 小標(biāo)題名稱2-2-1
10 6 小標(biāo)題名稱2-2-2
11 2 中標(biāo)題名稱2-3
---------------------
輸出效果:
序號(hào) 項(xiàng)目名稱
1 標(biāo)題名稱一
1.1 中標(biāo)題名稱1-1
1.1.1 小標(biāo)題名稱1-1-1
1.2 中標(biāo)題名稱1-2
2 標(biāo)題名稱二
2.1 中標(biāo)題名稱2-1
2.2 中標(biāo)題名稱2-2
2.2.1 小標(biāo)題名稱2-2-1
2.2.2 小標(biāo)題名稱2-2-2
2.3 中標(biāo)題名稱2-3
============================
要在PHP實(shí)現(xiàn)這個(gè)輸出效果,要怎么實(shí)現(xiàn)呢?
Interrogez d'abord ceux dont le pid est 0, parcourez ceux dont le pid est 0, interrogez ceux dont le pid est l'ID de ces éléments, puis affichez en boucle
S'il s'agit d'Oracle, vous pouvez utiliser les fonctions level() et sys_connect_by_path() pour l'implémenter.
Si vous n'utilisez pas de fonctions, vous pouvez créer une vue pour l'implémenter.
Ceci est une référence à ma méthode, qui utilise la récursion pour parcourir. Tant qu'elle traite des structures de données, il existe des méthodes, cela dépend simplement de l'efficacité
.static public function toLevel($cate, $delimiter = '|——', $parent_id = 0, $level = 0) {
$arr = array();
foreach ($cate as $v) {
if ($v['parent_id'] == $parent_id) {
$v['type'] = $level + 1;
$v['delimiter'] = str_repeat($delimiter, $level);
$arr[] = $v;
$arr = array_merge($arr, self::toLevel($cate, $delimiter, $v['cate_id'], $v['type']));
}
}
return $arr;
}
Interrogez les données à l'aide d'appels de fonction. Le premier répond parfaitement à vos besoins et le second est le stockage récursif des données
.$arr = [
0=>['id'=>1,'pid'=>0,'title'=>'標(biāo)題名稱一'],
1=>['id'=>2,'pid'=>0,'title'=>'標(biāo)題名稱一'],
2=>['id'=>3,'pid'=>1,'title'=>'標(biāo)題名稱一'],
3=>['id'=>4,'pid'=>1,'title'=>'標(biāo)題名稱一'],
4=>['id'=>5,'pid'=>2,'title'=>'標(biāo)題名稱一'],
5=>['id'=>6,'pid'=>2,'title'=>'標(biāo)題名稱一'],
6=>['id'=>7,'pid'=>3,'title'=>'標(biāo)題名稱一'],
7=>['id'=>8,'pid'=>3,'title'=>'標(biāo)題名稱一'],
8=>['id'=>9,'pid'=>6,'title'=>'標(biāo)題名稱一'],
9=>['id'=>10,'pid'=>6,'title'=>'標(biāo)題名稱一'],
10=>['id'=>11,'pid'=>2,'title'=>'標(biāo)題名稱一'],
];
$result = foreachd($arr,0);var_dump($result);
function foreachd($arr,$pid,$showpage = '') {
$setpage = 1;
$result = array();
foreach($arr as $key=>$val) {
if($val['pid'] == $pid) {
$setshowpage = $showpage == '' ? $setpage : $showpage.'.'.$setpage;
$arr[$key]['page'] = $setshowpage;
$setpage++;
$setarray = ['page'=>$setshowpage,'title'=>$val['title']];
$result[] = $setarray;
$result = array_merge($result,foreachd($arr,$val['id'],$setshowpage));
}
}
return $result;
}
/*function foreachd($arr,$pid) {
$return = array();
foreach($arr as $val) {
if($val['pid'] == $pid) {
$return[$val['id']]['title'] = $val['title'];
$childrendata = foreachd($arr,$val['id']);
if($childrendata) {
$return[$val['id']]['children'] = $childrendata;
}
}
}
return $return;
}*/