Maison > développement back-end > Problème PHP > Comment implémenter la suppression récursive des données d'arborescence en PHP

Comment implémenter la suppression récursive des données d'arborescence en PHP

PHPz
Libérer: 2023-04-11 14:06:24
original
448 Les gens l'ont consulté

Lors du développement Web, nous devons généralement supprimer un nœud et ses nœuds enfants dans la structure de données arborescente. La suppression récursive des données d'une arborescence est une tâche très courante en langage PHP. Dans cet article, nous présenterons comment implémenter la suppression récursive des données d'arborescence en PHP.

1. Préparation

Avant de commencer à écrire du code, nous devons préparer quelques données pour démontrer comment supprimer de manière récursive les données de l'arborescence. Nous pouvons définir un tableau pour simuler une structure arborescente. À ce stade, nous devons déterminer l’ID de chaque nœud et son ID de nœud parent. Voici un exemple :

$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]
];
Copier après la connexion

2. Implémenter la suppression récursive

Après avoir préparé les données, nous pouvons commencer à implémenter la méthode de suppression récursive des données d'arborescence. Ce qui suit est une méthode d'implémentation de base :

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;
}
Copier après la connexion

Dans le code ci-dessus, nous définissons deux méthodes récursives. La méthode deleteNode est utilisée pour supprimer le nœud avec l'ID $id et ses nœuds enfants ; la méthode deleteChildNode est utilisée pour supprimer le nœud enfant avec l'ID $id. Dans ces deux méthodes, nous supprimons le nœud cible et ses nœuds enfants en parcourant les données. Avant de supprimer un nœud, nous devons utiliser la fonction unset pour le supprimer.

Ensuite, nous pouvons appeler la méthode deleteNode pour supprimer le nœud. Par exemple, ce qui suit est un exemple de code pour supprimer le nœud avec l'ID 1 et ses nœuds enfants :

$tree = deleteNode($data, 1);
Copier après la connexion

Dans le code ci-dessus, nous appelons la méthode deleteNode, en passant le tableau $data et 1 comme paramètres.

3. Tester le code

Enfin, nous pouvons garantir l'exactitude de notre méthode de suppression récursive en testant le code. Voici un exemple de code de test :

$tree = deleteNode($data, 1);

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

Dans le code ci-dessus, nous appelons la méthode deleteNode, en passant le tableau $data et 1 comme paramètres. Ensuite, nous imprimons le tableau $tree pour vérifier si le nœud avec l'ID 1 et ses nœuds enfants ont été supprimés avec succès.

Après avoir exécuté le code ci-dessus, le résultat que nous obtenons est le suivant :

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
        )

)
Copier après la connexion

Les résultats ci-dessus montrent que nous avons supprimé avec succès le nœud avec l'ID 1 et ses nœuds enfants.

4. Résumé

Cet article présente comment implémenter la suppression récursive des données d'arborescence en PHP. Nous avons d'abord préparé un tableau pour simuler une structure arborescente, puis utilisé deux méthodes récursives pour parcourir le tableau et supprimer le nœud cible et ses nœuds enfants. Grâce aux étapes ci-dessus, nous pouvons facilement mettre en œuvre la tâche de suppression récursive des données d'arborescence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal