Cette fois je vous propose CMSPRESS pour réaliser une classification infinie (avec code). Quelles sont les précautions pour que CMSPRESS mette en œuvre une classification infinie Voici des cas pratiques, jetons un coup d'œil ?
SuperClassification infinie Simple et efficace à utiliser, le code de base fait moins de 10 lignes
De plus, je souhaite découvrir les lacunes de cette classification, et une plus efficace et méthode de classification infinie simple ^_^
Le code de base est le suivant
class Tool { static public $treeList = array(); //存放无限分类结果如果一页面有多个无限分类可以使用 Tool::$treeList = array(); 清空 /** * 无限级分类 * @access public * @param Array $data //数据库里获取的结果集 * @param Int $pid * @param Int $count //第几级分类 * @return Array $treeList */ static public function tree(&$data,$pid = 0,$count = 1) { foreach ($data as $key => $value){ if($value['Pid']==$pid){ $value['Count'] = $count; self::$treeList []=$value; unset($data[$key]); self::tree($data,$value['Id'],$count+1); } } return self::$treeList ; } }
$treeList[] Enregistrer le résultat du tri consiste essentiellement à le trier et à l'enregistrer une fois, puis à le supprimer ($ data[$key]); car il n'est plus utilisé
&$data utilise le passage de paramètres par adresse, combiné avec unset($data[$key]); .
Mais le Pid doit être trié par ASC, sinon il sera affiché Incomplet
$value['Count'] = $count; généré par niveau dans le modèle
La structure des données avant et après le tri est la suivante
Champs Id et Pid requis par la table
Structure des données avant le tri
id pid
1 0
2 0
3 1
4 3
Structure de données triées
id pid count
1 0 1
3 1 2
4 3 3
2 0 1
//默认列表 public function index() { $menu = M('Menu'); $list = $menu->order('Pid ASC,Morder DESC,Id ASC')->select(); $this->assign('List',Tool::tree($list)); $this->display(); }
<td style=" text-indent :<{$vo['Count']*20}>px;"><neq name="vo.Count" value="1">| -- </neq><{$vo.Name}></td>
et utilisez le modèle
Après le test, s'il y a 3 000 éléments, cela prend 0,5 seconde pour 1 000 éléments. 0,02 secondes. S'il dépasse 3 000, l'efficacité sera considérablement réduite. L'efficacité d'environ 2 000 est encore relativement élevée. Je n'ai pas effectué de tests plus détaillés
Je pense qu'il faudra y jeter un œil. Dans le cas de cet article, vous maîtrisez la méthode. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web PHP chinois !
Lecture recommandée :
Explication détaillée de l'utilisation de la liaison statique retardée PHP
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!