ホームページ  >  記事  >  バックエンド開発  >  PHP+mysql は無限の分類例 (非再帰的) を実現するために再帰を使用しません。mysql recursion_PHP チュートリアル

PHP+mysql は無限の分類例 (非再帰的) を実現するために再帰を使用しません。mysql recursion_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:23:20983ブラウズ

php+mysql 再帰なしの無限分類例 (非再帰的)、mysql 再帰

無限分類を実現するには、一般に再帰が最初に考えるのが簡単ですが、一般に再帰はリソースを消費する方法であると考えられているため、多くのシステムは再帰の使用を考慮していません
この記事は依然としてデータベース設計と SQL ステートメントを通じて実装されています
データベースのフィールドはおおよそ次のとおりです:

コードをコピーします コードは次のとおりです:
ID番号
FID 親カテゴリ番号
class_name カテゴリ名
パス分類パス。ID をノードとして、1,2,3,4,
のような文字列を形成します。

次のデータを想定できます:

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

id fid class_name パス
1 0 分類 1, 1,
2 0 カテゴリ 2, 2,
3 1 カテゴリ 1-1、1、3、
4 1 カテゴリ 1-2、1、4、
5 2 分類 2-1、2、5、
6 4 分類 1-2-1、1、4、6、

無制限の分類操作コード:

リーリー

$nbs がデータベース操作クラスである場合、このメソッドはシンプルで明確です!

phpの再帰問題、Infinitus分類スタイルに従ってデータを表示したい

最初に json を配列にデコードし、json_decode 関数を使用します。2 番目のパラメーターを追加する必要があることに注意してください。追加しないとオブジェクトが返されます。次のステップは再帰です。これは、1 つずつ実行するだけの最も単純な再帰です。
以下は完全なコードです:
$data= json_decode($str,true);$options = getChildren($data);function getChildren($parent,$deep=0) {foreach($parent as $row) { $ data[] = array("id"=>$row['id'], "name"=>$row['name'],"pid"=>$row['parentid'],' deep '=>$deep);if ($row['childs']) {$data = array_merge($data, getChildren($row['childs'], $deep+1));}}return $data ; }?>
上記のコードはテストされており、レンダリングは次のようになります


PHP+mysql は無限の分類例 (非再帰的) を実現するために再帰を使用しません。mysql recursion_PHP チュートリアル

phpの再帰問題(無限分類)

Foreach 自体は、$arr 配列が空でない場合、子ノードを走査して再帰的にアクセスしますが、葉ノードの場合、$arr 配列は空であるため、この時点ではまったく foreach されません。直接返却されます。クリア?

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/840754.html技術記事 PHP + mysql は無限分類の例を実装するために再帰を使用しません (非再帰的)。MySQL の再帰は無限分類を実装する必要がありますが、一般に再帰が最も重要であると考えられています。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。