首页 > 代码库 > 无限极分类信息
无限极分类信息
1.数据库设计:
CREATE TABLE `smar_category` ( `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘栏目ID‘, `pid` smallint(5) unsigned NOT NULL DEFAULT ‘0‘ COMMENT ‘父ID‘, `catname` varchar(30) NOT NULL COMMENT ‘栏目名称‘, `sort` smallint(5) unsigned NOT NULL DEFAULT ‘0‘ COMMENT ‘排序‘, PRIMARY KEY (`id`), INDEX pid (pid)) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
2.思路:
①设置pid 保存父级栏目
②取出所有数据
③调用递归函数进行排序
3.源码
1 /** 2 * 将数据按照级别排序 3 * @return array 返回排序好的 4 */ 5 public function reSort(){ 6 //1.先取出所有的数据 7 $allCategory = $this->order(‘sort desc‘)->select(); 8 //2.调用递归函数进行排序 9 return $this->_reSort($allCategory);10 }11 /**12 * 递归排序13 * @param array $data 数组14 * @param int $parend_id 父级15 * @param int $level 标识当前记录是第几层的16 * @return array 返回排序好的17 */18 public function _reSort($data,$parend_id = 0,$level=0){19 static $_ret = array();20 foreach($data as $k=>$v){21 if($v[‘pid‘] == $parend_id){22 //标识当前记录是第几层的23 $v[‘level‘] =$level;24 $_ret[] =$v;25 //把这条记录从数组中删除,再找子类不用循环这条记录了26 unset($data[$k]);27 //再找当前这条记录的所有的子类28 $this->_reSort($data, $v[‘id‘],$level+1);29 }30 }31 return $_ret;32 }
4.删除栏目
1 /** 2 * 递归找出一个栏目的所有子栏目并且进行删除 3 * @param int $parend_id 父级 4 * @return array 返回排序好的 5 */ 6 public function getChildId($parent_id){ 7 //1.取出所有的栏目 8 $allCat = $this->order(‘sort desc‘)->select(); 9 //2.调用递归函数在所有的栏目中找子栏目10 return $this->_findChildId($allCat, $parent_id);11 }12 /**13 * 递归排序14 * @param array $data 数组15 * @param int $parend_id 父级16 * @return array 返回排序好的17 */18 public function _findChildId($data,$parent_id){19 static $ret = array();20 foreach($data as $k=>$v){21 if($v[‘pid‘] == $parent_id){22 $ret[] = $v[‘id‘];23 //把记录从元数字中删除掉,再循环记录不用在判断这条记录24 unset($data[$k]);25 //再找这个条记录的子栏目26 $this->_findChildId($data,$v[‘id‘]);27 }28 }29 return $ret;30 }31 32
无限极分类信息
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。