PHP を長い間実行してきた結果、バックエンド管理システムの不可欠なアプリケーション モジュールは通常の状況では列の分類であることがわかりました。すべての列を実行する必要があります。成功のレベルは無制限です。つまり、理論的には各列にサブ列を追加できます。私の意見では、この状況の処理は全体としてはそれほど複雑ではありません。比較的難しい点は無限列のクエリだけです。
この状況について簡単に説明します。この種の無限列をクエリするには、一般に 2 つの方法があります。1 つはスタック メカニズムを使用する方法で、もう 1 つは再帰関数を使用する方法です。再帰関数の実装メカニズムもスタックの助けを借りて実装されます)。以下では、これら 2 つの方法を個別に紹介します。
再帰関数の実装
上で述べたように、再帰関数もスタック メカニズムを利用して実装されますが、基礎となるスタック処理はプログラマにとって透過的であり、プログラマはアプリケーションの実装ロジックのみを気にする必要があります。したがって、上記の問題に対処するには再帰を使用する方が理解しやすく、コードも比較的簡潔になります。再帰関数を使用しているため、名前からカスタム関数を使用する必要があることがわかります。まず実装のアイデアについて簡単に説明し、具体的な詳細をコードに反映させていきます。
各レイヤーの関数の主な仕事は、親 ID が現在の ID である列を見つけることです。それを見つけた後、独自の関数を再度呼び出し、見つかった列の ID を次のレイヤーの親 ID として使用します。
フローチャートは以下の通りです
写真1
上記の説明を理解できるかどうかはわかりませんが、次のコードを見てみましょう。
リーリー
これは、無限列クエリを再帰的に実装するためのコア コードです。図 1 に基づいて、その実装プロセスをより明確に理解する必要があります。
上記では、無限列をクエリするための再帰の使用を簡単に紹介しました。以下では、非再帰的な方法を簡単に紹介します。再帰関数は使用していませんが、無限カラムの構造ページを考慮すると、この問題を解決するには再帰実装メカニズム、つまりスタックメカニズムを参照する必要があります。
私が学校にいたとき、先生は、スタックの中心的なメカニズムは実際には、先入れ、後出しという 4 つの単語だけであると言いました。
ここではスタックの仕組みについてはあまり説明しませんが、主にスタックを使用して無制限の列クエリを実装する方法について説明します。
1. まず一番上の列をスタックにプッシュします
2. スタックから最上位の要素をポップします
3. ポップされた要素を配列に格納し、その深さをマークします (深さは親列の深さに 1 を加えます)
4. ポップされた要素を親列として使用し、そのサブ列を見つけます
5. 見つかったサブ列をスタックにプッシュし、ステップ 2 を繰り返します
6. スタックが空であると判断された場合、プロセスは終了します。
上記のステップを翻訳することで、これらのステップを PHP コードに翻訳できます。コアコードは次のとおりです。リーリー
上記は非再帰的メソッドを使用して実装されています。
コードをダウンロード: https://github.com/onmpw/phpApp
まとめ
上記の 2 つの方法にはそれぞれ長所と短所がありますが、無限列の構造を考慮すると実装形式は異なりますが、両方の実装メカニズムは同じであり、どちらもスタックを使用して実装されます。実際の状況では、実際の状況のニーズに基づいて実装方法を選択する必要があります。
興味がありそうな記事: php+mysqlで無限分類を実装 | ツリー表示分類関係 phpで無限分類を学習 ecshopのリファレンス分析 詳細なコメント付きで無制限の分類を実装
www.bkjia.com