ホームページ  >  記事  >  バックエンド開発  >  ツリーアルゴリズム_PHPチュートリアル

ツリーアルゴリズム_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:28:02730ブラウズ

//测试数据 $ar = array( array(id=>1,pid=>0)、array(id=>2,pid=>0)、array(id=>3,pid=>2)、array(id=>4,pid=>0)、array( id=>5,pid=>3)、array(id=>6,pid=>1)、array(id=>7,pid=>1)、array(id=>8,pid=>6)、 array(id=>9,pid=>7), array(id=>10,pid=>9) ); //ソート関数 function cmd($a,$b) { if($a[pid]== $b[pid]) return 0; return $a[pid]>$b[pid]?1:-1; } //データ内で親ノードが子ノードの後ろに表示されるのを避けるために、複数回発生する データ変更後によく起こること // ソートの目的は、この状況によって引き起こされる混乱を防ぐことです uasort($ar,cmd) // ターゲット配列を定義します $d = array(); // インデックスを定義します記録ノードの配列 ターゲット配列の位置 $ind = array(); foreach($ar as $v) { $v[child] = array(); //各ノードに子項目を追加します。 [pid] == 0) { $i = count($d); $d[$i] = $v; $ind[$v[id]] =& $d[$i]; = count($ind [$v[pid]][子]); $ind[$v[pid]][子][$i] = $v[$v[id]] =& $ind; [$v[pid ]][child][$i]; } } //結果を確認 print_r($d); ?> アルゴリズムの特徴: B+ ツリーの概念を使用して、1 サイクルだけでツリー配列を生成できます

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/531826.html技術記事 1,pid=>0)、配列(id=>2,pid=>0)、配列(id=>3,pid=>2)、配列(id=>4,pid=>0)、配列(id) =>5,pid=>3)、配列(id=>6,pid=>1)、配列(id=>7,pid=>1)、配列(id=>8,pid=>6)、配列(id=>9,pid=>7)、...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。