PHP 查询多级分类的实例程序代码_免费下载.doc_第1页
PHP 查询多级分类的实例程序代码_免费下载.doc_第2页
PHP 查询多级分类的实例程序代码_免费下载.doc_第3页
PHP 查询多级分类的实例程序代码_免费下载.doc_第4页
PHP 查询多级分类的实例程序代码_免费下载.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PHP 查询多级分类的实例程序代码本文章来给大家介绍一个PHP 查询多级分类的实例程序代码,有需要了解的同学可进入参考。分类表,比如category,字段有 id,parentid,title查询时,我们希望得到有层级关系的数组,就是顶级是顶级分类,然后每个分类中有个children子数组,记录它的子分类,这样一级一级的分级数组。代码如下代码如下/查询/一览()$dsql-SetQuery(SELECT * FROM category ORDER BY sortorder ASC);$dsql-Execute(parentlist);$array = array();$parentlist = array();while ($rs=$dsql-getObject(parentlist) if($rs-parentid = 0) $parentlist$rs-id = (array)$rs; else $array$rs-id = (array)$rs; $parentlist = cat_options($parentlist, $array); /我们求的结果数组 /$list父级分类的数组 /$array是除父级分类外的全部分类的数组 function cat_options(&$list,&$array) foreach ($list as $key = $arr) foreach ($array as $k = $value) if($valueparentid = $arrid) $list$keychildren = $value; unset($array$k); foreach ($list as $key = $arr) if(is_array($arrchildren) & count($arrchildren) 0) $list$keychildren = cat_options($list$keychildren, $array); return $list;好了现在给大家推荐一个无限分类的函数代码如下1, pid=0, name=主页 ), array( id=2, pid=0, name=新闻 ), array( id=3, pid=0, name=媒体 ), array( id=4, pid=0, name=下载 ), array( id=5, pid=0, name=关于我们 ), array( id=6, pid=2, name=天朝新闻 ), array( id=7, pid=2, name=海外新闻 ), array( id=8, pid=6, name=州官新闻 ), array( id=9, pid=3, name=音乐 ), array( id=10, pid=3, name=电影 ), array( id=11, pid=3, name=小说 ), array( id=12, pid=9, name=铃声 ), array( id=13, pid=9, name=流行音乐 ), array( id=14, pid=9, name=古典音乐 ), array( id=15, pid=12, name=热门铃声 ), array( id=16, pid=12, name=搞笑铃声 ), array( id=17, pid=12, name=MP3铃声 ), array( id=18, pid=17, name=128K ), array( id=19, pid=8, name=娱乐新闻 ), array( id=20, pid=11, name=穿越类 ), array( id=21, pid=11, name=武侠类 ), ); ?无限分类函数代码如下leaf(0); * $nav=$tree-navi(15); */ class Tree private $result; private $tmp; private $arr; private $already = array(); /* * 构造函数 * * param array $result 树型数据表结果集 * param array $fields 树型数据表字段,array(分类id,父id) * param integer $root 顶级分类的父id */ public function _construct($result, $fields = array(id, pid), $root = 0) $this-result = $result; $this-fields = $fields; $this-root = $root; $this-handler(); /* * 树型数据表结果集处理 */ private function handler() foreach ($this-result as $node) $tmp$node$this-fields1 = $node; krsort($tmp); for ($i = count($tmp); $i 0; $i-) foreach ($tmp as $k = $v) if (!in_array($k, $this-already) if (!$this-tmp) $this-tmp = array($k, $v); $this-already = $k; continue; else foreach ($v as $key = $value) if ($value$this-fields0 = $this-tmp0) $tmp$k$keychild = $this-tmp1; $this-tmp = array($k, $tmp$k); $this-tmp = null; $this-tmp = $tmp; /* * 反向递归 */ private function recur_n($arr, $id) foreach ($arr as $v) if ($v$this-fields0 = $id) $this-arr = $v; if ($v$this-fields1 != $this-root) $this-recur_n($arr, $v$this-fields1); /* * 正向递归 */ private function recur_p($arr) foreach ($arr as $v) $this-arr = $v$this-fields0; if ($vchild) $this-recur_p($vchild); /* * 菜单 多维数组 * * param integer $id 分类id * return array 返回分支,默认返回整个树 */ public function leaf($id = null) $id = ($id = null) ? $this-root : $id; return $this-tmp$id; /* * 导航 一维数组 * * param integer $id 分类id * return array 返回单线分类直到顶级分类 */ public function navi($id) $this-arr = null; $this-recur_n($this-result, $id); krsort($this-arr); return $this-arr; /* * 散落 一维数组 * * par

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论