ホームページ バックエンド開発 PHPチュートリアル PHP で無制限の分類を実装する 2 つの方法

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

Feb 05, 2018 am 09:38 AM
php 方法

この記事では、再帰を使用する場合と、再帰を使用しない場合の 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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles