ホームページ  >  記事  >  バックエンド開発  >  PHPでツリーデータの再帰的削除を実装する方法

PHPでツリーデータの再帰的削除を実装する方法

PHPz
PHPzオリジナル
2023-04-11 10:31:32415ブラウズ

Web 開発を行う場合、通常、ツリー データ構造内のノードとその子ノードを削除する必要があります。ツリー データを再帰的に削除することは、PHP 言語では非常に一般的なタスクです。この記事では、PHPでツリーデータの再帰的削除を実装する方法を紹介します。

1. 準備

コードを書き始める前に、ツリー データを再帰的に削除する方法を示すデータを準備する必要があります。配列を定義してツリー構造をシミュレートできます。この時点で、各ノードの ID とその親ノード ID を決定する必要があります。以下は例です:

$data = [
    ['id' => 1, 'parent_id' => 0],
    ['id' => 2, 'parent_id' => 1],
    ['id' => 3, 'parent_id' => 1],
    ['id' => 4, 'parent_id' => 2],
    ['id' => 5, 'parent_id' => 4],
    ['id' => 6, 'parent_id' => 4],
    ['id' => 7, 'parent_id' => 3],
    ['id' => 8, 'parent_id' => 0],
    ['id' => 9, 'parent_id' => 8],
    ['id' => 10, 'parent_id' => 9],
    ['id' => 11, 'parent_id' => 10]
];

2. 再帰的削除の実装

データを準備した後、ツリー データを再帰的に削除するメソッドの実装を開始できます。基本的な実装メソッドは次のとおりです。

function deleteNode($data, $id){
    foreach ($data as $key => $value) {
        if ($value['id'] == $id) {
            unset($data[$key]);
            deleteChildNode($data, $id);
        }
    }
    return $data;
}

function deleteChildNode($data, $id){
    foreach ($data as $key => $value) {
        if ($value['parent_id'] == $id) {
            unset($data[$key]);
            deleteChildNode($data, $id);
        }
    }
    return $data;
}

上記のコードでは、2 つの再帰メソッドを定義します。 deleteNode メソッドは、ID $id のノードとその子ノードを削除するために使用され、deleteChildNode メソッドは ID $id の子ノードを削除するために使用されます。これら 2 つの方法では、データを走査してターゲット ノードとその子ノードを削除します。ノードを削除する前に、unset 関数を使用してノードを削除する必要があります。

次に、deleteNode メソッドを呼び出してノードを削除します。たとえば、次のサンプル コードは、ID 1 のノードとその子ノードを削除します。

$tree = deleteNode($data, 1);

上記のコードでは、deleteNode メソッドを呼び出し、$data 配列と 1 をパラメータとして渡します。

3. テスト コード

最後に、テスト コードを通じて再帰的削除メソッドが正しいことを確認できます。以下はテスト コードの例です。

$tree = deleteNode($data, 1);

// 验证是否已删除ID为1的节点以及其子节点
print_r($tree);

上記のコードでは、deleteNode メソッドを呼び出し、$data 配列と 1 をパラメーターとして渡します。次に、$tree 配列を出力して、ID 1 のノードとその子ノードが正常に削除されたかどうかを確認します。

上記のコードを実行すると、次のような出力が得られます。

Array
(
    [0] => Array
        (
            [id] => 1
            [parent_id] => 0
        )

    [7] => Array
        (
            [id] => 8
            [parent_id] => 0
        )

    [8] => Array
        (
            [id] => 9
            [parent_id] => 8
        )

    [9] => Array
        (
            [id] => 10
            [parent_id] => 9
        )

    [10] => Array
        (
            [id] => 11
            [parent_id] => 10
        )

)

上記の結果は、ID 1 のノードとその子ノードが正常に削除されたことを示しています。

4. 概要

この記事では、PHP でツリー データの再帰的削除を実装する方法を紹介します。まずツリー構造をシミュレートする配列を準備し、次に 2 つの再帰メソッドを使用して配列を走査し、ターゲット ノードとその子ノードを削除しました。上記の手順により、ツリー データを再帰的に削除するタスクを簡単に実装できます。

以上がPHPでツリーデータの再帰的削除を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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