189 8069 5689

如何在PHP项目中利用递归实现一个无限级分类-创新互联

本篇文章给大家分享的是有关如何在PHP项目中利用递归实现一个无限级分类,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

成都创新互联是一家专注于成都做网站、网站设计、外贸营销网站建设与策划设计,南山网站建设哪家好?成都创新互联做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:南山等地区。南山做网站价格咨询:18982081108

Mysql
首先我们准备一张数据表class,记录商品分类信息。表中有三个字段,id:分类编号,主键自增长;title:分类名称;pid:所属上级分类id。
class表结构:


CREATE TABLE IF NOT EXISTS `class` ( 
 `id` mediumint(6) NOT NULL AUTO_INCREMENT, 
 `title` varchar(30) NOT NULL, 
 `pid` mediumint(6) NOT NULL DEFAULT '0', 
 PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

插入数据后,如图:

如何在PHP项目中利用递归实现一个无限级分类

PHP
根据不同的需求,我们提供两种不同格式的自定义函数,一种是返回字符串,一种是返回数组,两种函数都使用了递归方法。先看返回字符串格式的函数:


function get_str($id = 0) { 
 global $str; 
 $sql = "select id,title from class where pid= $id"; 
 $result = mysql_query($sql);//查询pid的子类的分类 
 if($result && mysql_affected_rows()){//如果有子类 
  $str .= '
    ';    while ($row = mysql_fetch_array($result)) { //循环记录集     $str .= "
  • " . $row['id'] . "--" . $row['title'] . "
  • "; //构建字符串     get_str($row['id']); //调用get_str(),将记录集中的id参数传入函数中,继续查询下级    }    $str .= '
';   }   return $str;  }

以上函数get_str()通过递归,不断查询下级分类,并最终返回字符串,大家可以根据项目需求修改其中的str,最终生成一个无限分级列表:


include_once('connect.php'); //连接数据库,connect.php文件自己写一个啊 
echo get_str(0); //输出无限级分类

效果如:

如何在PHP项目中利用递归实现一个无限级分类

接着我们来看返回数组格式的函数,一样要使用递归:


function get_array($id=0){ 
 $sql = "select id,title from class where pid= $id"; 
 $result = mysql_query($sql);//查询子类 
 $arr = array(); 
 if($result && mysql_affected_rows()){//如果有子类 
  while($rows=mysql_fetch_assoc($result)){ //循环记录集 
   $rows['list'] = get_array($rows['id']); //调用函数,传入参数,继续查询下级 
   $arr[] = $rows; //组合数组 
  } 
  return $arr; 
 } 
}

函数get_array()返回了数组,这是我们期待的,所以笔者推荐使用get_array()得到数组,这样一来,我们可以对数组进行任意操作,比如我们可以将数组转换成json格式的数据传给前端页面,前端页面可以通过解析json数据灵活展示分类信息。比如树形结构的分类列表,下拉分类列表等。


include_once('connect.php'); //连接数据库 
$list = get_array(0); //调用函数 
print_r($list); //输出数组

输出效果如:

如何在PHP项目中利用递归实现一个无限级分类

如果要输出json格式的数据,则可使用:


echo json_encode($list);

以上就是如何在PHP项目中利用递归实现一个无限级分类,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。


网站栏目:如何在PHP项目中利用递归实现一个无限级分类-创新互联
文章链接:http://jkwzsj.com/article/jpoid.html

其他资讯