Obtain all sub-classes of a category:
Static function getMenuTree ($ arrCat, $ parent_id = 0, $ level = 0, $ all = True) {static $ arrTree; // use static instead of global if (! $ All) $ arrTree = ''; if (empty ($ arrCat) return FALSE; $ level ++; if ($ level = 1) $ arrTree [] = $ parent_id; foreach ($ arrCat as $ key => $ value) {if ($ value ['parent _ cid'] = $ parent_id) {// $ value ['level'] = $ level; $ arrTree [] = $ value ['cid']; unset ($ arrCat [$ key]); // deregister the data of the current node to reduce useless traversal self: getMenuTree ($ arrCat, $ value ['cid'], $ level) ;}return $ arrTree ;}
The premise of using this method is to write the classification to the cache file. The write method of the cache file is as follows:
public function actionIndex2() { $filepath = Yii::getPathOfAlias('application').'/data/'; $arr = array(); $db = Yii::app()->db; $listinfo = $db->createCommand("select name,cid,parent_cid,root_cid from item_cat_info")->queryAll(); foreach($listinfo as $val) { $arr[$val['cid']] = array('cid'=>$val['cid'],'name'=>$val['name'],'parent_cid'=>$val['parent_cid'],'root_cid'=>$val['root_cid']); } $applist = "<?php\nreturn ".var_export($arr, true).";\n?>"; file_put_contents($filepath.'itemcat.php', $applist); }