PHP使用递归生成文章树

 更新时间:2015年04月21日 09:08:22   投稿:hebedich  
写递归函数,可考虑缓存,定义一些静态变量来存上一次运行的结果,多程序运行效率很有帮助.大概步骤如下:首先到数据库取数据,放到一个数组,然后把数据转化为一个树型状的数组,最后把这个树型状的数组转为html代码。下面我们来看个实例

因为自己的一个技术站,以文章为主,文章有些是一个系列的,所以想把这些文章归类,同一类的在一个下面。

数据库好设计,无非用id,fatherid来进行归类,fatherid代表父类是那篇文章的id,id是文章的唯一id,层次不限,可以是两层,可以是三层。fatherid为0的表示顶层文章。

php代码,主要是递归

function category_tree($fatherid){
  //require_once("mysql_class/config.inc.php");
  //require_once("mysql_class/Database.class.php");
  $db = new Database(DB_SERVER, DB_USER, DB_PASS, DB_DATABASE);
  $db->connect();
  $sql = "SELECT id,title,url FROM ".TABLE_TASK." 
     WHERE fatherid=$fatherid and ispublic=1 order by id asc";
  $articles = $db->query($sql);
  $db->close();
  while ($record = $db->fetch_array($articles)){
    $i = 0;
    if ($i == 0){
      if($fatherid==0){
        echo '<ul class="article-list-no-style border-bottom">';
      }else{
        echo '<ul class="article-list-no-style">';
      }
      
    }
    if($fatherid==0){
      echo '<li><span class="glyphicon glyphicon-log-in" 
      aria-hidden="true" id="han'.$record['id'].'">
      </span>&nbsp;&nbsp;<a href="'.$record['url'].'" target="_blank">' 
      . $record['title'].'</a>';
    }else{
      echo '<li><span class="glyphicon glyphicon-chevron-right" aria-hidden="true">
      </span>&nbsp;<a href="'.$record['url'].'" target="_blank">' 
      . $record['title'].'</a>';
    }
    
    category_tree($record['id']);
    echo '</li>';
    $i++;
    if ($i > 0){
      echo '</ul>';
    }
  }
}

调用:

category_tree(0) //先提取最顶层文章

以上所述就是本文的全部内容了,希望大家能够喜欢。

相关文章

  • 实例讲解PHP表单验证功能

    实例讲解PHP表单验证功能

    在本文中我们给大家分享了关于PHP表单验证功能以及相关的实例代码内容,有需要的朋友们学习下。
    2019-02-02
  • Yii2.0 RESTful API 基础配置教程详解

    Yii2.0 RESTful API 基础配置教程详解

    这篇文章主要介绍了Yii2.0 RESTful API 基础配置教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例

    PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例

    下面是小编在前段时间做淘宝客引发的一些思考,有关PHP抓取淘宝商品的用户晒单评论+图片实例的方法,需要的朋友参考下吧
    2016-04-04
  • yii2缓存Caching基本用法示例

    yii2缓存Caching基本用法示例

    这篇文章主要介绍了yii2缓存Caching基本用法,结合实例形式分析了Yii2中缓存的配置、设置、读取及判断等基本用法,需要的朋友可以参考下
    2016-07-07
  • PHPMailer使用QQ邮箱实现邮件发送功能

    PHPMailer使用QQ邮箱实现邮件发送功能

    这篇文章主要介绍了PHPMailer使用QQ邮箱实现邮件发送功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • 微信公众平台开发之配置与请求

    微信公众平台开发之配置与请求

    微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字、图片、语音的全方位沟通、互动。本文给大家介绍微信公众平台开发之配置与请求,需要的朋友可以参考下
    2015-08-08
  • PHP获取页面执行时间的方法(推荐)

    PHP获取页面执行时间的方法(推荐)

    这篇文章主要介绍了PHP获取页面执行时间的方法(推荐)的相关资料,需要的朋友可以参考下
    2016-12-12
  • Yii框架表单模型和验证用法

    Yii框架表单模型和验证用法

    这篇文章主要介绍了Yii框架表单模型和验证用法,结合实例形式分析了Yii表单模型的原理及验证器的使用技巧,需要的朋友可以参考下
    2016-05-05
  • php curl获取到json对象并转成数组array的方法

    php curl获取到json对象并转成数组array的方法

    今天小编就为大家分享一篇php curl获取到json对象并转成数组array的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • thinkphp3.2.2前后台公用类架构问题分析

    thinkphp3.2.2前后台公用类架构问题分析

    这篇文章主要介绍了thinkphp3.2.2前后台公用类架构问题,以实例形式较为详细的分析了前后台公用类的简单调用方法,非常具有实用价值,需要的朋友可以参考下
    2014-11-11

最新评论