Maison > développement back-end > tutoriel php > Comment une fonction récursive peut-elle créer un tableau multidimensionnel à partir d'un résultat de base de données plate ?

Comment une fonction récursive peut-elle créer un tableau multidimensionnel à partir d'un résultat de base de données plate ?

DDD
Libérer: 2024-12-15 20:59:15
original
555 Les gens l'ont consulté

How Can a Recursive Function Create a Multidimensional Array from a Flat Database Result?

Fonction récursive pour générer un tableau multidimensionnel à partir du résultat d'une base de données

Problème :

Construire hiérarchiquement des tableaux imbriqués à partir d'une table de résultats plate , où chaque ligne représente un élément avec son parent ID.

Solution :

function buildTree(array $elements, $parentId = 0) {
    $branch = array();

    foreach ($elements as $element) {
        if ($element['parent_id'] == $parentId) {
            $children = buildTree($elements, $element['id']);
            if ($children) {
                $element['children'] = $children;
            }
            $branch[] = $element;
        }
    }

    return $branch;
}

$tree = buildTree($rows);
Copier après la connexion

Explication :

L'algorithme construit de manière itérative une structure arborescente hiérarchique en utilisant la récursivité :

  1. Il initialise un tableau vide $branch pour stocker le niveau actuel de l'arbre.
  2. Il parcourt les éléments et vérifie si le parent_id d'un élément correspond au $parentId spécifié.
  3. Si une correspondance est trouvée, cela signifie que l'élément est un enfant du parent actuel et doit être ajouté à la branche $.
  4. Il appelle récursivement la fonction buildTree avec l'identifiant de l'élément comme nouveau $parentId pour trouver son enfants.
  5. Si des enfants sont trouvés, ils sont ajoutés en tant que sous-tableau à l'élément actuel.
  6. Après avoir traité tous les enfants, le tableau $branch est renvoyé pour représenter le niveau suivant de la hiérarchie.
  7. L'appel initial à buildTree avec un $parentId initial de 0 récupère les éléments racine de la hiérarchie, et les appels récursifs remplissent le fichier imbriqué. structure.

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