インターネットの発展に伴い、分類ディレクトリ、人事組織構(gòu)造、権限管理など、さまざまなWebサイトやアプリケーションにツリー構(gòu)造の表示が登場しました。これらのアプリケーション シナリオでは、再帰ツリー構(gòu)造が非常に重要かつ実用的なモデルの 1 つになっています。
ThinkPHP6 は、MVC モデルに基づいた PHP 開発フレームワークです。豊富な拡張ライブラリと優(yōu)れたパフォーマンスを備え、開発者に広く認(rèn)知され、使用されています。ThinkPHP6 では再帰ツリー構(gòu)造の実裝がさらに便利になりました。
以下、ThinkPHP6 で再帰関數(shù)を使ってツリー構(gòu)造を構(gòu)築する方法を紹介します。
1. データベース構(gòu)造の定義
再帰ツリー構(gòu)造を?qū)g裝する前に、まずアプリケーションがデータを処理できるようにデータベースにデータを保存する方法を知る必要があります。この例では、「カテゴリ」テーブルを作成し、カテゴリ名、カテゴリID、親IDなどの情報(bào)をカテゴリテーブルに格納します。
分類テーブルの構(gòu)造は次のとおりです。
id ??int(11) 主キー
name varchar(50) 分類名
parent_id int(11) 親分類 ID
2. 再帰関數(shù)の実裝
次に、ルート ノードから開始してすべての子ノードをクエリするための再帰関數(shù)を?qū)g裝する必要があります。 ThinkPHP6 では、select メソッドと $where パラメーターを組み合わせて、指定した列をクエリすることができます。例:
Db::name('category table')->where('parent_id',$id ) ->select();
この例では、$id は再帰関數(shù)に渡されるパラメーターであり、現(xiàn)在のノードの ID を示します。再帰関數(shù)は、ID に基づいてノードのすべての子ノードを再帰的にクエリします。
以下は再帰関數(shù)の実裝です:
function getChildren($id){ //查詢該節(jié)點(diǎn)下的所有子節(jié)點(diǎn) $children=Db::name('分類表')->where('parent_id',$id)->select(); //如果沒有子節(jié)點(diǎn),返回空數(shù)組 if(empty($children)){ return $children; } //遞歸查詢子節(jié)點(diǎn)的子節(jié)點(diǎn),并將結(jié)果合并到$children數(shù)組中 foreach($children as $k=>$v){ $children[$k]['children']=$this->getChildren($v['id']); } return $children; }
この関數(shù)では、まずノードの下にあるすべての子ノードをクエリし、結(jié)果を $children 配列に保存します。ノードに子ノードがない場合は、空の配列が直接返されます。
次に、foreach ループを使用して $children 配列內(nèi)の各子ノードを走査し、再帰関數(shù)を呼び出して子ノードのすべての子ノードをクエリします。結(jié)果を $children 配列にマージし、最終的に $children 配列全體を返します。
3. 出力ツリー構(gòu)造
再帰関數(shù)がノードとそのすべてのサブノードの情報(bào)を取得した場合、それらをツリー構(gòu)造として出力する必要があります。これは、再帰関數(shù)によって返された配列をループし、各ノードの深さに基づいて対応するインデント記號(hào)を出力することによって実現(xiàn)できます。
以下はツリー構(gòu)造を出力するコードです:
function outputTree($arr,$deep=0){ //定義縮進(jìn)符號(hào) $symbol='|--'; $html=''; foreach($arr as $v){ //根據(jù)節(jié)點(diǎn)深度輸出縮進(jìn)符號(hào) $html.=str_repeat(' ',$deep).$symbol.$v['name'].'<br/>'; //如果有子節(jié)點(diǎn),繼續(xù)遍歷 if(!empty($v['children'])){ $html.=$this->outputTree($v['children'],$deep+1); } } return $html; }
この関數(shù)では、最初にインデント記號(hào)を定義し、次に配列內(nèi)の各ノードを再帰的に走査します?,F(xiàn)在のノードの深さに基づいて、対応するインデント シンボルの數(shù)を出力します。ノードに子ノードがある場合は、ノードのすべての子ノードを再帰的に走査し続けます。
最後に、ツリー構(gòu)造全體を出力するコードは次のとおりです:
$id=0; $arr=$this->getChildren($id); $html=$this->outputTree($arr); echo $html;
このコードでは、$id はルート ノードの ID を表します。最初に再帰関數(shù)を呼び出して、すべての子ノードの情報(bào)を取得し、ツリー構(gòu)造を出力する関數(shù)を呼び出して、ツリー構(gòu)造全體を HTML ページに出力します。
4. 概要
ThinkPHP6 の豊富な拡張ライブラリと再帰関數(shù)を使用すると、再帰ツリー構(gòu)造を簡単に構(gòu)築でき、アプリケーションの管理と使用が容易になります。この記事が、ツリー構(gòu)造を構(gòu)築する際の開発作業(yè)に役立ち、タスクをより効率的に完了できることを願(yuàn)っています。
以上がThinkPHP6 を使用して再帰的ツリー構(gòu)造を?qū)g裝するの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

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

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

C++ 関數(shù)の再帰の深さは制限されており、この制限を超えるとスタック オーバーフロー エラーが発生します。制限値はシステムやコンパイラによって異なりますが、通常は 1,000 ~ 10,000 の間です。解決策には次のものが含まれます: 1. 末尾再帰の最適化、2. 末尾呼び出し、3. 反復(fù)実裝。

ThinkPHP プロジェクトを?qū)g行するには、Composer をインストールし、Composer を使用してプロジェクトを作成し、プロジェクト ディレクトリに入り、php bin/consoleserve を?qū)g行し、http://localhost:8000 にアクセスしてようこそページを表示する必要があります。

ThinkPHP には、さまざまな PHP バージョン向けに設(shè)計(jì)された複數(shù)のバージョンがあります。メジャー バージョンには 3.2、5.0、5.1、および 6.0 が含まれますが、マイナー バージョンはバグを修正し、新機(jī)能を提供するために使用されます。最新の安定バージョンは ThinkPHP 6.0.16 です。バージョンを選択するときは、PHP バージョン、機(jī)能要件、コミュニティ サポートを考慮してください。最高のパフォーマンスとサポートを得るには、最新の安定バージョンを使用することをお?jiǎng)幛幛筏蓼埂?/p>

ThinkPHP フレームワークをローカルで実行する手順: ThinkPHP フレームワークをローカル ディレクトリにダウンロードして解凍します。 ThinkPHP ルート ディレクトリを指す仮想ホスト (オプション) を作成します。データベース接続パラメータを構(gòu)成します。 Webサーバーを起動(dòng)します。 ThinkPHP アプリケーションを初期化します。 ThinkPHP アプリケーションの URL にアクセスして実行します。

はい、C++ ラムダ式は std::function を使用して再帰をサポートできます。std::function を使用して Lambda 式への參照をキャプチャします。キャプチャされた參照を使用すると、ラムダ式はそれ自體を再帰的に呼び出すことができます。

ThinkPHP のインストール手順: PHP、Composer、および MySQL 環(huán)境を準(zhǔn)備します。 Composer を使用してプロジェクトを作成します。 ThinkPHP フレームワークと依存関係をインストールします。データベース接続を構(gòu)成します。アプリケーションコードを生成します。アプリケーションを起動(dòng)し、http://localhost:8000 にアクセスします。

ThinkPHP は、キャッシュ メカニズム、コードの最適化、並列処理、データベースの最適化などの利點(diǎn)を備えた高性能 PHP フレームワークです。公式パフォーマンステストでは、1秒あたり10,000以上のリクエストを処理できることが示されており、実際のアプリケーションではJD.comやCtripなどの大規(guī)模なWebサイトやエンタープライズシステムで広く使用されています。

再帰アルゴリズムは、関數(shù)の自己呼び出しを通じて構(gòu)造化された問題を解決します。利點(diǎn)は、シンプルで理解しやすいことですが、欠點(diǎn)は、効率が低く、スタック オーバーフローを引き起こす可能性があることです。非再帰アルゴリズムは、明示的に管理することで再帰を回避します。スタック データ構(gòu)造の利點(diǎn)は、より効率的でスタックのオーバーフローを回避できることですが、欠點(diǎn)はコードがより複雑になる可能性があることです。再帰的か非再帰的かの選択は、問題と実裝の特定の制約によって異なります。
