ホームページ  >  記事  >  バックエンド開発  >  PHP で無制限の分類を実装する 2 つの方法

PHP で無制限の分類を実装する 2 つの方法

韦小宝
韦小宝オリジナル
2018-02-05 09:38:471734ブラウズ

この記事では、再帰を使用する場合と、再帰を使用しない場合の PHP での無限分類の実装について説明します。私たちの開発プロセスでは、PHP 無限分類も非常に一般的です。非常に頻繁に使用されるので、それをマスターする必要があります。PHP で無制限の分類を実現する方法がわからない友人は、この記事を参照してください PHP を長い間実行した後、バックグラウンド管理システムを発見しました。不可欠なアプリケーション モジュールは分類です。一般に、列は無限レベルにする必要があります。これは、理論的には各列にサブ列を追加できることを意味します。私の意見では、この状況の処理は全体としてはそれほど複雑ではありません。比較的難しい点は無限列のクエリだけです。

この状況について簡単に説明します。この種の無限列をクエリするには通常 2 つの方法があり、1 つはスタック メカニズムを使用する方法、もう 1 つは

再帰関数

を使用する方法です。再帰関数の実装メカニズムもスタックの助けを借りて実装されます)。以下では、これら 2 つの方法を個別に紹介します。

再帰関数の実装方法

上で述べたように、再帰関数はスタックメカニズムを利用して実装されますが、基礎となるスタック処理はプログラマにとって透過的であり、プログラマはアプリケーションロジックの実装のみを気にする必要があります。 。したがって、上記の問題に対処するには再帰を使用する方が理解しやすく、コードも比較的簡潔になります。

再帰関数を使用しているため、名前からカスタム関数を使用する必要があることがわかります。まず実装のアイデアについて簡単に説明し、具体的な詳細をコードに反映させていきます。

各レイヤーの関数の主な仕事は、親 ID が現在の ID である列を見つけることです。それを見つけた後、その独自の関数を再度呼び出し、見つかった列の ID を次のレイヤーの親 ID として使用します。

フローチャートは以下の通りです

写真1

上記の説明を理解できるかわかりませんが、問題はありませんので、直接コードを見てみましょう

rreee
これが核心です。無限列クエリを再帰的に実装するためのコードを図と組み合わせると、その実装プロセスをより明確に理解できるようになります。

非再帰、つまりスタックメカニズムを使用して無限レベルの列クエリを実現する

上記では、無限レベルの列クエリを実現するための再帰の使用について簡単に紹介しました。次に、非再帰について簡単に紹介します。 -再帰的メソッド。再帰関数は使用していませんが、無限カラムの構造ページを考慮すると、この問題を解決するには再帰実装メカニズム、つまりスタックメカニズムを参照する必要があります。

私が学校にいたとき、先生は、スタックの中心的なメカニズムは実際には、先入れ、後出しという 4 つの単語だけであると言いました。

ここではスタックの仕組みについてはあまり話しませんが、主にスタックを使用して無制限の列クエリを実装する方法について説明します。

1. まず最初の列をスタックにプッシュします

2. スタックから最上位の要素をポップし、その深さをマークします(その深さはその親) 列の深さに 1) を追加します

4. ポップされた要素を親列として使用し、そのサブ列を検索します

5. 見つかったサブ列をスタックにプッシュし、繰り返します。ステップ 2

6. スタックが空であると判断された場合、プロセスは終了します。

上記のステップを変換すると、これらのステップを

PHP コード

に変換できます。 上記は非再帰的な方法で実装されています。

ダウンロードコード:

https://github.com/onmpw/phpApp
まとめ

上記 2 つの方法は、実装形態は異なりますが、無限カラムの構造を考慮すると、それぞれメリットとデメリットがあります。 、2 つの実装メカニズム これらはすべて同じであり、すべてスタックを使用して実装されます。実際の状況では、実際の状況のニーズに基づいて実装方法を選択する必要があります。

おすすめ記事:

phpで無限の分類木を実装するphpで無制限の分類木を実装するには?この記事では主に、PHP で無制限の分類ツリー リストを簡単に実装する方法を紹介します。多くのオープンソース ソフトウェアは再帰アルゴリズムを使用しています...

以上がPHP で無制限の分類を実装する 2 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。