设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php 无限分类实现方法实例代码

发布时间:2022-07-08 11:15 所属栏目:121 来源:互联网
导读:算法,各种算法对一个数学很烂的人来说真是一个严重的打击!!!但谁让咱干程序这行呢(哭)。 搞了几小时,参照 http://yuepin.com/Explore/tree.php? 该网址的说明实例,可算是明白一点,下边代码,给自己留个笔记。 注:因为是无限次的调用,所以我加了个判断
  算法,各种算法对一个数学很烂的人来说真是一个严重的打击!!!但谁让咱干程序这行呢(哭)。
 
  搞了几小时,参照 http://yuepin.com/Explore/tree.php? 该网址的说明实例,可算是明白一点,下边代码,给自己留个笔记。
 
  注:因为是无限次的调用,所以我加了个判断,在层级$level=10的时候让他跳出。没有哪个正常网站会放超过10层的目录结构吧。
 
  $yArr    = array(
      1 => array('id'=>'1','parentid'=>0,'name'=>'一级栏目一'),
      2 => array('id'=>'2','parentid'=>0,'name'=>'一级栏目二'),
      3 => array('id'=>'3','parentid'=>1,'name'=>'二级栏目一'),
      4 => array('id'=>'4','parentid'=>1,'name'=>'二级栏目二'),
      5 => array('id'=>'5','parentid'=>2,'name'=>'二级栏目三'),
      6 => array('id'=>'6','parentid'=>3,'name'=>'三级栏目一'),
      7 => array('id'=>'7','parentid'=>3,'name'=>'三级栏目二'),
      8 => array('id'=>'8','parentid'=>2,'name'=>'二级栏目三'),
  );
  
  /**
   * 无限分类
   * @param array $data 原始数组
   * @param int $id 当前id
   * @param int $layer 当前层级
   */
  function genCate($data, $pid = 0, $level = 0)
  {
      if($level == 10) break;
      static $tarr= array();
      $l    = str_repeat(" ", $level);
      $l    = $l.'└';
      foreach($data as $row)
      {
          /**
           * 如果父ID为当前传入的id  www.CuoXIn.com
           */
          if($row['parentid'] == $pid)
          {
              //如果当前遍历的id不为空
              $row['name']    = htmlspecialchars($l.$row['name']);
              $row['level']    = $level;
              $tarr[]    = $row;
              genCate($data, $row['id'], $level+1);//递归调用
          }
      }
      return $tarr;
  }
  $carr    = genCate($yArr);
  print_r($carr)。
 

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读