ホームページ > バックエンド開発 > PHPチュートリアル > PHP Super Awesome Infinitus 分類スパニング ツリー手法_PHP チュートリアル

PHP Super Awesome Infinitus 分類スパニング ツリー手法_PHP チュートリアル

WBOY
リリース: 2016-07-13 09:54:17
オリジナル
1011 人が閲覧しました

PHPの超すごい無限分類スパニングツリー法

この記事では、PHPの超すごい無限分類スパニングツリー法を中心に紹介しており、再帰的手法よりもはるかに高度なツリー生成手法をPHPで巧みに利用しています。はい、困っている友達は参考にしてください

時間とメモリを無駄にする Infinitus 分類の再帰探索をまだ使用していますか? この記事を読んだ後、変更する必要があると思います。

これはOSChinaで見かけた非常に簡潔なPHP Infinitus分類スパニングツリー手法ですので、たまたま引用して共有用にまとめました。

コードは次のとおりです:

関数generateTree($items){

$tree = array();

foreach($items as $item){

if(isset($items[$item['pid']])){

$items[$item['pid']]['son'][] = &$items[$item['id']];

}その他{

$tree[] = &$items[$item['id']];

}

}

$tree を返す;

}

$items = array(

1 => array('id' => 1, 'pid' => 0, 'name' => '安徽省'),

2 => array('id' => 2, 'pid' => 0, 'name' => '浙江省'),

3 => array('id' => 3, 'pid' => 1, 'name' => '合肥市'),

4 => array('id' => 4, 'pid' => 3, 'name' => '長豊県'),

5 => array('id' => 5, 'pid' => 1, 'name' => '安慶市'),

);

print_r(generateTree($items));

以下の印刷結果を確認できます:

コードをコピーします。コードは次のとおりです:

配列

(

[0] => 配列

(

[id] => 1

[pid] => 0

[名前] => 安徽省

[息子] => 配列

(

[0] => 配列

(

[id] => 3

[pid] => 1

[名前] => 合肥市

[息子] => 配列

(

[0] => 配列

(

[id] => 4

[pid] => 3

[名前] => 長豊県

[1] => 配列

(

[id] => 5

[pid] => 1

[名前] => 安慶市

[1] => 配列

(

[id] => 2

[pid] => 0

[名前] => 浙江省

上記のスパニングツリー手法は 5 行に削減できます:

コードをコピーします。コードは次のとおりです:

関数generateTree($items){

foreach($items as $item)

$items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];

戻り isset($items[0]['son']) $items[0]['son'] : array();

}

上記のInfinitus分類データのツリー構造の手法は学ぶ価値があります。しかし、このコードの実際の使用法は明らかではないと思います。フォーマットされたツリーデータを取得したい場合は、やはり再帰する必要があります:

コードをコピーします。コードは次のとおりです:

/**

* データ形式のツリーデータの取得方法

*/

$tree =generateTree($items);

関数getTreeData($tree){

foreach($tree as $t){

$t['name']をエコーし​​ます。'
';

if(isset($t['son'])){

getTreeData($t['son']);

}

}

}

getTreeData($tree);

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/998353.html技術記事この記事では、PHPの超すごい無限分類スパニングツリー手法を中心に紹介しており、PHPの参照を巧みに利用して、再帰的手法よりも高度なツリー生成手法を実現しています...
関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート