看了很多別人的實(shí)現(xiàn)方法,都沒看明白,所以自己寫一個(gè)。數(shù)據(jù)庫結(jié)構(gòu)如下:model里面這樣子<?php/** * Created by PhpStorm. * User: 王柏建 * Date: 2016/10/09 * Time: 11:32 */namespace Api/Model;use Think/Model;class TypeModel extends Model{ //通過admin_id獲取分類 public static function getTypeByAdminId($admin_id){ return M('type')->where(array("admin_id"=>$admin_id))->select(); } //通過條件獲取一個(gè)分類 public static function getTypeByWhere($where){ return M('type')->where($where)->find(); } //通過條件獲取部分分類 public static function getAllTypeByWhere($where){ return M('type')->where($where)->field("clothes_type_id,clothes_type_father_id,clothes_type_name,clothes_type_icon_url")->select(); }}最后這里是controller里面的寫法。<?phpnamespace Api/Controller;use Api/Model/TypeModel;use Think/Controller;class TreeController extends Controller { //記錄層 public $div = []; //記錄樹 public $tree = []; //返回樹 public function returnTree(){ $tree = []; //獲取目前已經(jīng)有的結(jié)構(gòu) $this->getChild(0); //從第一級開始 //dump($this->tree); //這里是輸出數(shù)組 $this->AjaxReturn($this->tree,"json"); //輸出json } //獲取某個(gè)分類的子分類以及下面的服飾 public function getChild($clothes_type_father_id){ $types = TypeModel::getAllTypeByWhere(array("clothes_type_father_id"=>$clothes_type_father_id)); if(!$types){ array_pop($this->div); return; } if($clothes_type_father_id == 0){ $this->div[] = 0; } else{ $this->div[] = TypeModel::getTypeByWhere(array('clothes_type_id'=>$clothes_type_father_id))['clothes_type_id']; } //將獲取到的東西放到$this->tree里面 $this->putData($this->tree,$this->div,$types); //循環(huán)這一級里面的類,再獲取其子類和下面的服飾 foreach($types as $t){ $this->getChild($t['clothes_type_id']); } } //插入數(shù)據(jù)到特定下標(biāo) public function putData(&$array,$down,$data){ $j = []; $k = 0; foreach($down as $d){ if($j == null){ $j[$k] = &$array[$d]; } else{ $j[$k] = &$j[$k++][$d]['son']; } } $count = count($j)-1; foreach($data as $d){ $j[$count][$d['clothes_type_id']] = $d; } unset($j); unset($k); }}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注