phpは無限分類を実現し、phpはレベル分類を実現します
コードをコピーします コードは次のとおりです:
$area = 配列(
array('id'=>1,'name'=>'安徽','parent'=>0),
array('id'=>2,'name'=>'Haidian','parent'=>7),
array('id'=>3,'name'=>'遂西県','parent'=>5),
array('id'=>4,'name'=>'Changping','parent'=>7),
array('id'=>5,'name'=>'淮北','parent'=>1),
array('id'=>6,'name'=>'朝陽','parent'=>7),
array('id'=>7,'name'=>'北京','parent'=>0),
array('id'=>8,'name'=>'上地','parent'=>2)
);
1. 再帰、子孫ツリーを見つける
コードをコピーします コードは次のとおりです:
関数サブツリー($arr,$id=0,$lev=1) {
$subs = array() // 子孫の配列
;
foreach($arr as $v) {
If($v['parent'] == $id) {
$v['lev'] = $lev;
$subs[] = $v; // たとえば、array('id'=>1,'name'=>'Anhui','parent'=>0),
を見つけます。
$subs = array_merge($subs,subtree($arr,$v['id'],$lev+1));
}
}
$subs を返します;
}
$tree = サブツリー($area,0,1);
foreach($tree as $v) {
echo str_repeat(' ',$v['lev']),$v['name'],'
';
}
2. 再帰、家系図を見つける
パンくずナビゲーションなどの家系図アプリケーション > 携帯電話の種類 > CDMA 携帯電話 > 再帰的アプリケーション
コードをコピーします コードは次のとおりです:
関数ファミリーツリー($arr,$id) {
$tree = array();
foreach($arr as $v) {
if($v['id'] == $id) {//親列を見つけるかどうかを決定します
If($v['parent'] > 0) { // parnet>0、親列があることを意味します
$tree = array_merge($tree,familytree($arr,$v['parent']));
}
$tree[] = $v // 上地を見つけることを例に挙げます
;
}
}
$tree を返します;
}
print_r(familytree($area,8)); // 北京->海淀->上帝
2. 家系図を繰り返して見つけます
コードをコピーします コードは次のとおりです:
// 反復は再帰よりも効率的であり、多くのコードを必要としません。
// 家系図を見つけるには反復が推奨されます
関数ツリー($arr,$id) {
$tree = array();
While($id !== 0) {
foreach($arr as $v) {
if($v['id'] == $id) {
$tree[] = $v;
$id = $v['parent'];
休憩;
}
}
$tree を返します;
}
print_r(tree($area,8));
http://www.bkjia.com/PHPjc/932494.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/932494.html技術記事 PHP は無制限の分類を実装します。PHP は次のようにコードをコピーします。 $area = array( array('id'=1,'name'='Anhui','parent'=0), array('id'=) 2 、'name'='ハイディアン'、'parent'=7)、array('i...