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] ];
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; }
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);
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);
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 ) )
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!