ホームページ >バックエンド開発 >PHPチュートリアル >PHP+mysql は無限の分類例 (非再帰的) を実現するために再帰を使用しません。mysql recursion_PHP チュートリアル
無限分類を実現するには、一般に再帰が最初に考えるのが簡単ですが、一般に再帰はリソースを消費する方法であると考えられているため、多くのシステムは再帰の使用を考慮していません
この記事は依然としてデータベース設計と SQL ステートメントを通じて実装されています
データベースのフィールドはおおよそ次のとおりです:
次のデータを想定できます:
無制限の分類操作コード:
$nbs がデータベース操作クラスである場合、このメソッドはシンプルで明確です!
最初に 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 ; }?>
上記のコードはテストされており、レンダリングは次のようになります
。
Foreach 自体は、$arr 配列が空でない場合、子ノードを走査して再帰的にアクセスしますが、葉ノードの場合、$arr 配列は空であるため、この時点ではまったく foreach されません。直接返却されます。クリア?