在tp框架下實現無限極分類、獲取頂級id等方法


對於無限極分類,要查找一個分類的頂級分類聽起來很復雜
其實只要弄清原理,也並不是那么令人望而生畏!
<?php $sql = "select id, pid from tablename "; // 查詢后 將結果處理成 如下數組格式 $arr = [ // id => pid 1 => 0, // 省略... 6 => 1, // 省略... 12 =>6 ]; // 建議將這數組緩存起來 $id = 12; while($arr[$id]) { $id = $arr[$id]; } echo $id; // 1


注意:
1.其實無限極分類原理清晰后就會發現,其實id->pid關系緊密,pid頂級為0,故采用while循環是很好的解決辦法!
2.當然對數組的格式處理也得明白了。

關於無限極菜單簡單實現
1.先定義如下結構數組,當然數據庫查詢也可以處理成如下結構
$arr=array(
1=>array('id'=>'1','name'=>'北京','pid'=>'0'),
2=>array('id'=>'2','name'=>'上海','pid'=>'0'),
3=>array('id'=>'3','name'=>'浦東','pid'=>'2'),
4=>array('id'=>'4','name'=>'朝陽','pid'=>'1'),
5=>array('id'=>'5','name'=>'廣州','pid'=>'0'),
6=>array('id'=>'6','name'=>'三里屯','pid'=>'4'),
7=>array('id'=>'7','name'=>'廣東','pid'=>'5'),
8=>array('id'=>'8','name'=>'三里','pid'=>'4'),
10=>array('id'=>'10','name'=>'小胡同','pid'=>'8')
);

2.實現方法
public function getTrees($arr,$pid,$step = 0){
global $tree;
foreach($arr as $val) {
if($val['pid'] == $pid) {
$flag = str_repeat('&nbsp;&nbsp;&nbsp;',$step);
$val['cate_name'] = $flag.$val['cate_name'];
$tree[] = $val;
$this->getTrees($arr , $val['cate_id'] ,$step+1);
}
}
return $tree;
}
其中$flag參數可以根據自己喜好設計

3.調用方法
$newarr = $this->getTreegs($arr, 0, 0);

注意:這些都是在thinkphp框架下實現的,調用方法等語法一看便知,如果是自己寫原生代碼,不在框架內,則自行修改調用方式(去掉$this->function()格式)。




免責聲明!

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



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