ホームページ バックエンド開発 PHPチュートリアル 递归删除一个节点以及该节点下的所有节点示例_php技巧

递归删除一个节点以及该节点下的所有节点示例_php技巧

May 17, 2016 am 08:47 AM
ノード

有的时候删除信息的时候,需要把这条信息下的所有的都删除,这个时候就需要递归删除了。下面是我在做部门管理中的删除部门功能的时候写的一段递归删除一个部门以及它的所有子部门的一段代码。仅供大家参考和自己以后备用。

下面是我的一段代码的展示:

复制代码 代码如下:

/*
* 修改一条部门信息
*/
function del($bumen_id){
$sql="select bumen_id from lxsm_bumen where topbumen_id=".$bumen_id; //查询以topbumen_id为$bumen_id的bumen_id
$delsql="delete from lxsm_bumen where bumen_id=".$bumen_id; //删除bumen_id为$bumen_id的部门信息
$xiaji_id=$this->DB->fetch_assoc($sql);
if($xiaji_id){
foreach($xiaji_id as $id){
$res=$this->del($id[bumen_id]);
}
}
$result=$this->DB->query($delsql);
if($result){
return true;
}
else{
return false;
}
}

注释:这里的topbumen_id是部门信息中的上级部门的id号,fetch_assoc()函数是自己已经封装好的函数,是把查询得到的所有内容返回成一个数组。

心得体会:这是自己第一次写递归算法,写得还很稚嫩,不管怎样功能是实现了。我感觉写递归方面的代码的时候,自己先画好一个树状结构,认清其结构后,根据自己想要得到的效果,先在脑子里模拟一步一步的执行。比如这里的删除,想要删除一个部门,就得删除自己并且查找以自己为上级部门的子部门有哪些,把子部门一个一个地遍历得到,这时候子部门的操作,就和它的上级部门的删除一样,需要删除自己并且查找它的子部门,这样一来就有个类似重复的操作,子部门的操作和上级部门的操作经历的步骤是一样的,因此在子部门的遍历中让它执行这个本身的函数。这样一来就形成了一个递归算法。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

ノード X から始まるサブツリーの最小重みと最大 D の距離を照会します。 ノード X から始まるサブツリーの最小重みと最大 D の距離を照会します。 Aug 25, 2023 am 11:25 AM

コンピューター プログラミングを行う場合、特定のノードから D 単位以上離れたノードをサブツリーに含めることができないという条件で、特定のノードに由来するサブツリーの最小重みを見つけることが必要になる場合があります。この問題は、グラフ理論、ツリーベースのアルゴリズム、ネットワーク最適化など、さまざまな分野やアプリケーションで発生します。サブツリーは、指定されたノードがサブツリーのルート ノードとして機能する、より大きなツリー構造のサブセットです。サブツリーには、ルート ノードのすべての子孫とそれらの接続エッジが含まれます。ノードの重みは、そのノードに割り当てられた特定の値を指し、その重要性、重要性、またはその他の関連するメトリックを表すことができます。この問題の目標は、ルート ノードから最大 D 単位離れたノードにサブツリーを制限しながら、サブツリー内のすべてのノード間の最小重みを見つけることです。次の記事では、サブツリーから最小重みをマイニングする複雑さについて詳しく説明します。

Vue と jsmind を使用してマインド マップのノード コピーおよびカット機能を実装するにはどうすればよいですか? Vue と jsmind を使用してマインド マップのノード コピーおよびカット機能を実装するにはどうすればよいですか? Aug 15, 2023 pm 05:57 PM

Vue と jsmind を使用してマインド マップのノード コピーおよびカット機能を実装するにはどうすればよいですか?マインド マップは、考えを整理し、思考ロジックを整理するのに役立つ一般的な思考ツールです。ノードのコピーとカット機能は、マインド マップでよく使用される操作であり、既存のノードをより便利に再利用し、思考整理の効率を向上させることができます。この記事では、Vue と jsmind の 2 つのツールを使用して、マインド マップのノードのコピーとカット機能を実装します。まず、Vue と jsmind をインストールし、

jsでノードを削除する方法は何ですか jsでノードを削除する方法は何ですか Sep 01, 2023 pm 05:00 PM

js でノードを削除するメソッドは次のとおりです: 1. RemoveChild() メソッドは、指定された子ノードを親ノードから削除するために使用されます。これには 2 つのパラメータが必要です。最初のパラメータは削除される子ノードで、2 番目のパラメータは次のとおりです。親ノード ノード; 2.parentNode.removeChild() メソッドは、親ノードを介して直接呼び出して子ノードを削除できます; 3.remove() メソッドは、親ノードを指定せずにノードを直接削除できます; 4. innerHTML 属性は、ノードのコンテンツを削除するために使用されます。

Floyd-Warshal アルゴリズムを使用して、任意の 2 つのノード間の最短パスを検索します。 Floyd-Warshal アルゴリズムを使用して、任意の 2 つのノード間の最短パスを検索します。 Sep 20, 2023 pm 02:21 PM

C++ にはコードの一部または期待値として定義されるマクロがあり、ユーザーが必要とするたびに再利用されます。フロイド・ウォルシャル アルゴリズムは、指定された重み付きグラフ内の頂点のすべてのペア間の最短経路を見つけるプロセスです。このアルゴリズムは動的プログラミング アプローチに従って、最小重みグラフを見つけます。図を通してフロイド・ウォルシャルアルゴリズムの意味を理解しましょう - 頂点 1 をソースとして、頂点 4 を目的地として取り、それらの間の最短パスを見つけます。ターゲット頂点 4 に接続できるパスが 2 つあることがわかりました。 1->4 – エッジの重みは 51->8->3->4 – エッジの重み (1+2+1)は4です。与えられたグラフ I では、2 つの頂点を接続する最小のエッジが表示されます。ここに頂点があります

js で要素ノードを作成、削除、追加、置換する方法 (コード例付き) js で要素ノードを作成、削除、追加、置換する方法 (コード例付き) Aug 06, 2022 pm 05:26 PM

この記事では主にjsで要素ノードを作成、削除、追加、置換する方法を紹介しますので、困っている方の参考になれば幸いです。

指定されたグラフ内の 2 つのノード間のパスが最短パスを表すかどうかを確認します 指定されたグラフ内の 2 つのノード間のパスが最短パスを表すかどうかを確認します Sep 07, 2023 pm 06:57 PM

グラフの 2 つの中心間の指定されたパスが最短パスに準拠しているかどうかを確認するには、次のように信頼できる最短パスを使用して、指定されたパスに沿ったエッジ全体の重みを同じ中心の組み合わせ間の最短距離と比較することで計算できます。ダイクストラの計算またはフロイド・ウォーシャルの計算。特定のパス上のすべてのエッジの重みが最も制限された削除に一致する場合、それは最も単純なパスを表します。また、エッジの重み全体が最短距離よりも目立つ場合は、グラフ内の 2 つの中心間の距離が短いことを示します。使用される手法 ダイクストラのアルゴリズム 限界反転を伴うフロイド・ウォーシャル アルゴリズム コスト貪欲アルゴリズム ダイクストラの計算は、一般的なグラフ走査計算である可能性があります

ChatGPT プラグインを使用すると、ノードになりますが、センターではなくなります。 ChatGPT プラグインを使用すると、ノードになりますが、センターではなくなります。 Apr 04, 2023 am 11:45 AM

OpenAI は、ロボットとロボットの対話の世界における結節点 (ただし重要な結節点) ではありますが、中心ではありません。 ChatGPT はプラグイン メカニズムを開始しました。これは非常にエキサイティングな開発です。全員が異口同音に「OSが誕生した」とコメントした。この発言は完全に間違っています。 OpenAI は、ロボットとロボットの対話の世界における結節点 (ただし重要な結節点) ではありますが、中心ではありません。私の心の中には、ロボットがロボットと会話する世界というイメージが常にありました。人々はロボットとチャットし、ロボットの友人を通じて人間がタスクを完了するのをロボットに手伝ってもらいます。 ChatGPT プラグインは世界を完璧に示します

C プログラムで、次の内容を中国語に翻訳します。 リンクされたリストの下から n 番目のノードを検索するプログラム C プログラムで、次の内容を中国語に翻訳します。 リンクされたリストの下から n 番目のノードを検索するプログラム Sep 13, 2023 pm 03:13 PM

n 個のノードがある場合、タスクはリンク リストの最後に n 番目のノードを出力することです。プログラムはリスト内のノードの順序を変更してはなりませんが、リンクされたリストの最後のノードから n 番目のノードのみを出力する必要があります。例 Input-:102030405060 N=3Output-:40 上記の例では、最初のノードから開始して count-n 個のノード、つまり 10,2030,40,50,60 まで移動するため、最後から 3 番目のノードは 40 になります。 。リスト全体を効率的に走査する代わりに、次のアプローチを使用できます。たとえば、ノード タイプの temp への一時ポインタを取得し、この一時ポインタをヘッド ポインタが指す最初のノードに設定し、カウンタをリスト内のノードに設定します。

See all articles