Cet article présente principalement la méthode de génération d'un arbre d'implémentation de référence en PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
Utilisez-vous toujours le parcours récursif de la classification Infinitus qui fait perdre du temps et de la mémoire ? Après avoir lu cet article, je pense que vous devriez changer.
Il s'agit d'une méthode d'arbre couvrant de classification PHP Infinitus très concise que j'ai vue sur OSChina. Je l'ai cité et compilé pour le partager.
Le code est le suivant :
function generateTree($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; } $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' => 3, 'name' => '长丰县'), 5 => array('id' => 5, 'pid' => 1, 'name' => '安庆市'), ); print_r(generateTree($items));
Vous pouvez voir le résultat imprimé ci-dessous :
Le code est le suivant :
Array ( [0] => Array ( [id] => 1 [pid] => 0 [name] => 安徽省 [son] => Array ( [0] => Array ( [id] => 3 [pid] => 1 [name] => 合肥市 [son] => Array ( [0] => Array ( [id] => 4 [pid] => 3 [name] => 长丰县 ) ) ) [1] => Array ( [id] => 5 [pid] => 1 [name] => 安庆市 ) ) ) [1] => Array ( [id] => 2 [pid] => 0 [name] => 浙江省 ) )
L'arbre couvrant ci-dessus La méthode peut également être simplifiée à 5 lignes :
Le code est le suivant :
function generateTree($items){ foreach($items as $item) $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']]; return isset($items[0]['son']) ? $items[0]['son'] : array(); }
La méthode arborescente ci-dessus des données de classification Infinitus vaut apprendre de. Mais je pense que l'utilisation réelle de ce code n'est pas évidente. Si vous souhaitez extraire les données de l'arbre formaté, vous devez quand même récurer :
Le code est le suivant :
/** * 如何取数据格式化的树形数据 */ $tree = generateTree($items); function getTreeData($tree){ foreach($tree as $t){ echo $t['name'].'<br>'; if(isset($t['son'])){ getTreeData($t['son']); } } } getTreeData($tree);
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 :
Comment implémenter la couche de persistance en php
Comment utiliser PHP pour faire fonctionner la base de données afin de déterminer si une table existe
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!