ホームページ > バックエンド開発 > PHPチュートリアル > PHP は非常に素晴らしい Infinitus 分類スパニング ツリー メソッド、php_PHP チュートリアル

PHP は非常に素晴らしい Infinitus 分類スパニング ツリー メソッド、php_PHP チュートリアル

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

PHP の超素晴らしい Infinitus 分類スパニング ツリー メソッド、php

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

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

コードをコピーします コードは次のとおりです:
関数generateTree($items){
$tree = array();
foreach($items を $item){
If(isset($items[$item['pid']])){
$items[$item['pid']]['son'][] = &$items[$item['id']];
}その他{
$tree[] = &$items[$item['id']];
}
}
$tree を返します;
}
$items = 配列(
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] = & gt; [pid] => 0
[name] => anhuiprovince
[息子] => (
以来 (
                                                                                                                                                                            [pid] => 1
合肥市
[息子] => 配列
                                                                                                                                                                                                                                 (                                                                                                                                                                                                                                                                                            )

)

)

以来 (
                                                                                                                                                                     [pid] => 1
安慶市
)

)

)

[1] => 配列
(
[id] => 2
[pid] => 0
[名前] => 浙江省
)

)

上記のスパニング ツリー手法は 5 行に減らすこともできます:
コードをコピーします コードは次のとおりです:
関数generateTree($items){
foreach($items を $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){
echo $t['name'].'
';
If(isset($t['son'])){
getTreeData($t['son']);
}
}
}
getTreeData($tree);

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/997910.html技術記事 PHP は非常に優れた Infinitus 分類スパニング ツリー メソッドです。PHP 時間とメモリを無駄にする Infinitus 分類の再帰探索をまだ使用していますか? この記事を読んだ後、変更する必要があると思います。 これは…
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート