首页 > PHP教程 > php开发知识文章

PHP 实现无级递归分类的方法

什么是无限级分类

无限级分类是一种分类技巧,例如部门组织,文章分类,学科分类等常用到无限级分类,将其简单理解成分类就好了。生活中的分类简直太多了,衣服可以分为男装和女装,

也可以分为上衣和裤子,也可以根据年龄段分类。分类无处不在,分类显得“无限”。

 

无限级分类原理

无限分类原理是非常简单的 。无限分类不仅仅需要代码的巧妙性,也要依托数据库设计的合理性。要满足无限级分类,

数据库需要有两个必须的字段,id,pid。id用来标识自身,而pid则是用来表明父级id。也就是说,每个分类记录不仅描述了自身,还描述了与其关心最为紧密的另一个id。

/**
* 无级递归分类 TP框架
* @param int $assortPid 要查询分类的父级id
* @param mixed $tag 上下级分类之间的分隔符
* @return string $tree 返回的分类树型结构结果
*/
function recursiveAssort($assortPid, $tag = '')
{
$tree = '';
$assort = M('goods_class')->where("pid = $assortPid")->field('id, name')->select();
foreach ($assort as $value) {
$tree .= '<option value="' . $value['id'] . '">' . $tag . $value['name'] . '</option>';
$tree .= recursiveAssort($value['id'], $tag . ' ');
}
return $tree;
}

/**
* 利用php的引用传递 CI框架
*/
function get_access()
{
$access = array();
$field = 'id, pid, method, name, description';
$q_access = $this->db->select($field)->get('access');
$q_result = $q_access->result_array();
if (!empty($q_result)) {
$items = array();
foreach ($q_result as $value) {
$items[$value['id']] = $value;
}
foreach ($items as $key => $item) {
if ($item['pid'] == 0) {
$access[] = &$items[$key];
} else {
$items[$item['pid']]['sub_access'][] = &$items[$key];
}
}
}
return $access;
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持本站!

PHP 实现无级递归分类的方法

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。