<sup id="sjju3"><noscript id="sjju3"></noscript></sup>
    <big id="sjju3"></big>

  • <blockquote id="sjju3"></blockquote>
    <blockquote id="sjju3"></blockquote>

      <td id="sjju3"></td>

      <big id="sjju3"></big>
        <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>
      1. thinkphp5使用无限极分类

         更新时间:2019年02月18日 10:51:04   作者:tiramisuer8023   我要评论

        这篇文章主要为大家详细介绍了thinkphp5使用无限极分类,具有一定的参考价值,感兴趣的小伙伴们可以参?#23478;?#19979;

        本文实例为大家分享了thinkphp5使用无限极分类的具体代码,供大家参考,具体内容如下

        1. 先根据普通递归完成无限极分类

        2. 再根据分号的类的level 添加字符,再次存入数组的_name字段,最后按照_name字段输出

        /**
          * 获得树状数据
          * @param $data 数据
          * @param $title    数据库中字段名
          * @param string $fieldPri  数据库中主键id
          * @param string $fieldPid  数据库中父id
          * @return array
          */
         static public function tree($data, $title, $fieldPri = 'cid', $fieldPid = 'pid')
         {
          if (!is_array($data) || empty($data))
           return array();
          $arr = Data::channelList($data);
          foreach ($arr as $k => $v) {
           $str = "";
           if ($v['_level'] > 2) {
            for ($i = 1; $i < $v['_level'] - 1; $i++) {
             $str .= "│ ";
            }
           }
           if ($v['_level'] != 1) {
            $t = $title ? $v[$title] : "";
            if (isset($arr[$k + 1]) && $arr[$k + 1]['_level'] >= $arr[$k]['_level']) {
             $arr[$k]['_name'] = $str . "├─ " . $v['_html'] . $t;
            } else {
             $arr[$k]['_name'] = $str . "└─ " . $v['_html'] . $t;
            }
           } else {
            $arr[$k]['_name'] = $v[$title];
           }
          }
          //设置主键为$fieldPri
          $data = array();
          foreach ($arr as $d) {
           $data[$d[$fieldPri]] = $d;
          }
          return $data;
         }
        
        /**
          * 获得所有子栏目
          * @param $data 栏目数据
          * @param int $pid 操作的栏目
          * @param string $html 栏目名前字符
          * @param string $fieldPri 表主键
          * @param string $fieldPid 父id
          * @param int $level 等级
          * @return array
          */
         static public function channelList($data, $pid = 0, $html = " ", $fieldPri = 'cid', $fieldPid = 'pid', $level = 1)
         {
          $data = self::_channelList($data, $pid, $html, $fieldPri, $fieldPid, $level);
          if (empty($data))
           return $data;
         
          foreach ($data as $n => $m) {
           if ($m['_level'] == 1)
            continue;//结束单次循环
           $data[$n]['_first'] = false;
           $data[$n]['_end'] = false;
           if (!isset($data[$n - 1]) || $data[$n - 1]['_level'] != $m['_level']) {
            $data[$n]['_first'] = true; 
           }
           if (isset($data[$n + 1]) && $data[$n]['_level'] > $data[$n + 1]['_level']) {
            $data[$n]['_end'] = true;
           }
          }
          //更新key为栏目主键
          $category=array();
          foreach($data as $d){
           $category[$d[$fieldPri]]=$d;
          }
          return $category;
         }
        //只供channelList方法使用
         
         /**
          * 获得所有子栏目
          * @param $data 栏目数据
          * @param int $pid 操作的栏目
          * @param string $html 栏目名前字符
          * @param string $fieldPri 表主键
          * @param string $fieldPid 父id
          * @param int $level 等级
          * @return array
          */
         static private function _channelList($data, $pid = 0, $html = " ", $fieldPri = 'cid', $fieldPid = 'pid', $level = 1)
         {
          if (empty($data))
           return array();
          $arr = array();
         
          foreach ($data as $v) {
           $id = $v[$fieldPri];
           if ($v[$fieldPid] == $pid) {
            $v['_level'] = $level;
            $v['_html'] = str_repeat($html, $level - 1);
            $arr[] = $v;
         
            $tmp = self::_channelList($data, $id, $html, $fieldPri, $fieldPid, $level + 1);
            $arr = array_merge($arr, $tmp);//array_merge把两个数组整合为一个数组
           }
          }
          return $arr;
         }

        以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

        相关文章

        最新评论

        2018白小姐一肖中特马
        <sup id="sjju3"><noscript id="sjju3"></noscript></sup>
        <big id="sjju3"></big>

      2. <blockquote id="sjju3"></blockquote>
        <blockquote id="sjju3"></blockquote>

          <td id="sjju3"></td>

          <big id="sjju3"></big>
            <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>
          1. <sup id="sjju3"><noscript id="sjju3"></noscript></sup>
            <big id="sjju3"></big>

          2. <blockquote id="sjju3"></blockquote>
            <blockquote id="sjju3"></blockquote>

              <td id="sjju3"></td>

              <big id="sjju3"></big>
                <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>