無限級分類及生成json數據


第一步,先去數據庫查詢類別數據,然后交給生成json數據的函數處理,代碼如下:

1 /*生成類別JSON數據*/
2     public function wirteJson(){
3         $dataInfo = \think\Db::query("select id as v,name as n,pid from think_pro_category");
4         $data = $this->getCategoryJson($dataInfo);
5         return $data;
6     }

第二步,將查詢出來的類別數據重新歸類排序,代碼如下:

 1 /**
 2  *處理分類數組
 3 **/
 4 function generateTree($items) {
 5     $tree = array();
 6     foreach($items as $item){
 7         if(isset($items[$item['pid']])){
 8             $items[$item['pid']]['s'][] = &$items[$item['v']];
 9         }else{
10             $tree[] = &$items[$item['v']];
11         }
12     }
13     return $tree;
14 }

第三步,生成json數據,並返回數據,代碼如下:

 1 /**
 2      * 功能:無限級類別json數據生成
 3      * 參數:$data 類別查詢結果集
 4      * 返回值:$json 遞歸查詢排序后的json數據
 5      */
 6     public function getCategoryJson($dataInfo) {
 7         /*生成json數據*/
 8         foreach($dataInfo as $category) {
 9             $tree[$category['v']] = $category;
10             $tree[$category['v']]['s'] = array();
11         }
12         $content = json_encode(generateTree($tree));
13         $content = str_replace(',"s":[]', "", $content);
14         // for( $i = 0; $i < count($dataInfo); $i++ ) {
15         //     $content = str_replace('"'.$dataInfo[$i]['v'].'":', "", $content);
16         // }
17         //$content = '['.substr($content,1,strlen($content)-2).']';
18         //return $content;
19         /*寫入文件*/
20         //文件存放路徑
21         $filePath = $_SERVER['DOCUMENT_ROOT'].DS.'/category/category.json';
22         $returnval = file_put_contents($filePath,$content);
23         // $fopen = fopen($filePath,'w+');
24         // fwrite($fopen,$content);
25         // fclose($fopen);
26         return $returnval;
27     }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM