Au cours du processus de développement, il est souvent nécessaire de convertir des structures de données plates en structures d'arbres, en particulier dans les scénarios où les relations hiérarchiques doivent être affichées, telles que les menus, les catégories, les structures organisationnelles, etc. Dans cet article, nous présenterons en détail comment utiliser PHP pour convertir les données de liste en structures d'arbres pour vous aider à améliorer l'efficacité du développement.
Une structure d'arborescence est un modèle de données hiérarchique composé d'un nœud racine et de ses nœuds infantiles subordonnés. Chaque nœud enfant peut également avoir son propre nœud enfant, etc. Les structures d'arbres conviennent très pour représenter des relations hiérarchiques, telles que la structure organisationnelle de l'entreprise, la classification des produits, etc.
Afin de convertir une liste plate en une structure d'arbre, une liste de données contenant des informations sur le nœud et son nœud parent est d'abord requise. Par exemple, ce qui suit est un exemple de données contenant la relation entre le nœud et le nœud parent:
// Échantillons de données
$list = [
['id' => 1, 'name' => 'Nœud racine', 'pid' => 0],
['id' => 2, 'name' => 'Nœuds d'enfants1', 'pid' => 1],
['id' => 3, 'name' => 'Nœuds d'enfants2', 'pid' => 1],
['id' => 4, 'name' => 'Nœuds d'enfants1.1', 'pid' => 2],
['id' => 5, 'name' => 'Nœuds d'enfants1.2', 'pid' => 2],
];
Ensuite, nous rédigerons une fonction PHP qui convertit les données planes en structure d'arbre. La logique principale de cette fonction consiste à établir une relation hiérarchique en traversant les données à l'aide de l'ID de nœud et de l'ID du nœud parent:
function listToTree($list) {
$tree = [];
$references = [];
// Configurer les références pour chaque nœud
foreach ($list as $element) {
$references[$element['id']] = $element;
$references[$element['id']]['children'] = [];
}
// Structure de l'arbre couvrant
foreach ($list as $element) {
if ($element['pid'] == 0) {
// Nœud racine
$tree[] = &$references[$element['id']];
} else {
// Nœuds d'enfants
$references[$element['pid']]['children'][] = &$references[$element['id']];
}
}
return $tree;
}
// Fonctions d'appel
$tree = listToTree($list);
print_r($tree);
Dans le code ci-dessus, nous définissons une fonction appelée ListTotree , qui prend un tableau plan contenant des données de nœud en tant que paramètre et renvoie une structure d'arbre. À l'intérieur de la fonction, chaque nœud et ses nœuds enfants sont associés à travers une boucle et une structure d'arbre est finalement construite.
Utilisez la fonction print_r pour afficher facilement la structure de l'arborescence générée. Vous pouvez traiter davantage la structure en fonction des besoins réels, tels que le convertir au format JSON, ou l'affichage sur la page frontale.
Cet article explique en détail comment convertir les données de liste en une structure d'arbre via un code PHP. En comprenant les concepts de base et les méthodes de mise en œuvre des structures d'arbres, vous pouvez facilement maîtriser cette technique et vous aider à fonctionner efficacement dans l'affichage et la gestion de données à différents niveaux. La maîtrise de ces technologies peut non seulement améliorer l'efficacité du développement, mais également améliorer la commodité de la gestion des données.
J'espère que cet article vous aide. Si vous avez des questions, veuillez laisser un message dans la section des commentaires pour discuter.