Maison > développement back-end > tutoriel php > Méthode d'implémentation PHP pour obtenir un arbre de classification à N couches à partir d'un tableau bidimensionnel

Méthode d'implémentation PHP pour obtenir un arbre de classification à N couches à partir d'un tableau bidimensionnel

墨辰丷
Libérer: 2023-03-28 20:56:01
original
1471 Les gens l'ont consulté

Cet article présente principalement le code d'implémentation de PHP pour obtenir un arbre de classification à N couches à partir d'un tableau bidimensionnel. Les amis qui en ont besoin peuvent s'y référer

La classification des produits de l'entreprise existe dans un tableau, avec mid identifiant son parent Pour la classification, un tableau hiérarchique doit être obtenu pour les opérations ultérieures.

Après y avoir réfléchi pendant un moment, je n'arrivais pas à penser à un moyen de lire la base de données à plusieurs reprises ou à une opération qui ne nécessitait pas de récursion.

Source de données : (Les données nécessitent que l'identifiant de la clé unidimensionnelle et le tableau bidimensionnel de valeur correspondant soient identiques)

$items = array(
    1 => array('id' => 1, 'pid' => 0, 'name' => '江西省'),
    2 => array('id' => 2, 'pid' => 0, 'name' => '黑龙江省'),
    3 => array('id' => 3, 'pid' => 1, 'name' => '南昌市'),
    4 => array('id' => 4, 'pid' => 2, 'name' => '哈尔滨市'),
    5 => array('id' => 5, 'pid' => 2, 'name' => '鸡西市'),
    6 => array('id' => 6, 'pid' => 4, 'name' => '香坊区'),
    7 => array('id' => 7, 'pid' => 4, 'name' => '南岗区'),
    8 => array('id' => 8, 'pid' => 6, 'name' => '和兴路'),
    9 => array('id' => 9, 'pid' => 7, 'name' => '西大直街'),
    10 => array('id' => 10, 'pid' => 8, 'name' => '东北林业大学'),
    11 => array('id' => 11, 'pid' => 9, 'name' => '哈尔滨工业大学'),
    12 => array('id' => 12, 'pid' => 8, 'name' => '哈尔滨师范大学'),
    13 => array('id' => 13, 'pid' => 1, 'name' => '赣州市'),
    14 => array('id' => 14, 'pid' => 13, 'name' => '赣县'),
    15 => array('id' => 15, 'pid' => 13, 'name' => '于都县'),
    16 => array('id' => 16, 'pid' => 14, 'name' => '茅店镇'),
    17 => array('id' => 17, 'pid' => 14, 'name' => '大田乡'),
    18 => array('id' => 18, 'pid' => 16, 'name' => '义源村'),
    19 => array('id' => 19, 'pid' => 16, 'name' => '上坝村'),
);
Copier après la connexion

Fonctions Spanning Tree :

function genTree9($items) {
    $tree = array();
    foreach ($items as $item)
        if (isset($items[$item['pid']]))
            $items[$item['pid']]['son'][] = &$items[$item['id']];
        else
            $tree[] = &$items[$item['id']];
    return $tree;
}
Copier après la connexion

Bien sûr. Si les données répondent à des conditions spécifiques, la fonction peut être réduite à seulement 5 lignes :

function genTree5($items) {
    foreach ($items as $item)
        $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
    return isset($items[0]['son']) ? $items[0]['son'] : array();
}
Copier après la connexion

Boucle une fois, référence mémoire. Gagnez du temps et de l'espace.

Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

array_keys en php renvoie le nom de la clé du tableau

foreach en utilisation PHP

PHP Importer un fichier Excel dans la base de données MySQL

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!

Étiquettes associées:
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