91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP無限極分類函數怎么用

發布時間:2021-07-07 11:39:20 來源:億速云 閱讀:145 作者:小新 欄目:開發技術

小編給大家分享一下PHP無限極分類函數怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

通過引用方式實現無限極分類

思路:

1.即所有待處理的數據進行包裝成下標為主鍵id(pk)的數組,便于有pid獲取對應的父欄目。

2.對包裝的數據進行循環,如果為根節點,則將其引用添加到tree中,否則,將其引用添加到其父類的子元素中。這樣雖然tree中,只是添加了根節點,但是每個根節點如果有子元素,其中包含了子元素的引用。故能形成樹型。

代碼如下

/**
 * 把返回的數據集轉換成Tree
 * @param array $list 要轉換的數據集
 * @param string $pk 自增字段(欄目id)
 * @param string $pid parent標記字段
 * @return array
 * @author dqs <1696232133@qq.com>
 */
function make_tree($list,$pk='id',$pid='pid',$child='_child',$root=0){
  $tree=array();
  $packData=array();
  foreach ($list as $data) {
    $packData[$data[$pk]] = $data;
  }
  foreach ($packData as $key =>$val){
    if($val[$pid]==$root){//代表跟節點
      $tree[]=& $packData[$key];
    }else{
      //找到其父類
      $packData[$val[$pid]][$child][]=& $packData[$key];
    }
  }
  return $tree;
}

數據結構如下:

PHP無限極分類函數怎么用

執行結果如下

Array
(
  [0] => Array
    (
      [id] => 6
      [pid] => 0
      [title] => 測試1
      [url] => test1
      [sort] => 0
      [create_time] => 1464076199
      [update_time] => 1464076199
      [status] => 1
      [target] => 0
    )
  [1] => Array
    (
      [id] => 7
      [pid] => 0
      [title] => 測試2
      [url] => test2
      [sort] => 0
      [create_time] => 1464076218
      [update_time] => 1464076218
      [status] => 1
      [target] => 0
    )
  [2] => Array
    (
      [id] => 1
      [pid] => 0
      [title] => 首頁
      [url] => Index/index
      [sort] => 1
      [create_time] => 1379475111
      [update_time] => 1379923177
      [status] => 1
      [target] => 0
    )
  [3] => Array
    (
      [id] => 2
      [pid] => 0
      [title] => 博客
      [url] => Article/index?category=blog
      [sort] => 2
      [create_time] => 1379475131
      [update_time] => 1379483713
      [status] => 1
      [target] => 0
      [_child] => Array
        (
          [0] => Array
            (
              [id] => 4
              [pid] => 2
              [title] => 個人博客
              [url] => ownblog
              [sort] => 0
              [create_time] => 1464075558
              [update_time] => 1464075558
              [status] => 1
              [target] => 0
              [_child] => Array
                (
                  [0] => Array
                    (
                      [id] => 8
                      [pid] => 4
                      [title] => 新浪博客
                      [url] => sinaBlog
                      [sort] => 0
                      [create_time] => 1464077276
                      [update_time] => 1464077276
                      [status] => 1
                      [target] => 0
                    )
                )
            )
          [1] => Array
            (
              [id] => 5
              [pid] => 2
              [title] => 他人博客
              [url] => otherBlog
              [sort] => 0
              [create_time] => 1464075582
              [update_time] => 1464075582
              [status] => 1
              [target] => 0
            )
        )
    )
  [4] => Array
    (
      [id] => 3
      [pid] => 0
      [title] => 官網
      [url] => http://www.onethink.cn
      [sort] => 3
      [create_time] => 1379475154
      [update_time] => 1387163458
      [status] => 1
      [target] => 0
    )
)

附加OneThink中無限極分類函數

/**
 * 把返回的數據集轉換成Tree
 * @param array $list 要轉換的數據集
 * @param string $pid parent標記字段
 * @param string $level level標記字段
 * @return array
 * @author 麥當苗兒 <zuojiazi@vip.qq.com>
 */
function list_to_tree($list, $pk='id', $pid = 'pid', $child = '_child', $root = 0) {
  // 創建Tree
  $tree = array();
  if(is_array($list)) {
    // 創建基于主鍵的數組引用
    $refer = array();
    foreach ($list as $key => $data) {
      $refer[$data[$pk]] =& $list[$key];
    }
    foreach ($list as $key => $data) {
      // 判斷是否存在parent
      $parentId = $data[$pid];
      if ($root == $parentId) {
        $tree[] =& $list[$key];
      }else{
        if (isset($refer[$parentId])) {
          $parent =& $refer[$parentId];
          $parent[$child][] =& $list[$key];
        }
      }
    }
  }
  return $tree;
}

通過遞歸方式實現無限極分類

思路:

1.使用循環,分別獲取所有的根節點。

2.在獲取每個節點的時候,將該節點從原數據中移除,并遞歸方式獲取其所有的子節點,一直原數據為空。

代碼實現如下:

function make_tree1($list,$pk='id',$pid='pid',$child='_child',$root=0){
  $tree=array();
  foreach($list as $key=> $val){
    if($val[$pid]==$root){
      //獲取當前$pid所有子類
        unset($list[$key]);
        if(! empty($list)){
          $child=make_tree1($list,$pk,$pid,$child,$val[$pk]);
          if(!empty($child)){
            $val['_child']=$child;
          }
        }
        $tree[]=$val;
    }
  }
  return $tree;
}

效果截圖如下:

PHP無限極分類函數怎么用

以上是“PHP無限極分類函數怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

麦盖提县| 竹山县| 昌宁县| 嘉善县| 古浪县| 涪陵区| 响水县| 中超| 互助| 嘉义县| 城步| 彭山县| 麻栗坡县| 马尔康县| 九江县| 福安市| 寻甸| 汝州市| 张家港市| 囊谦县| 柘荣县| 财经| 莱阳市| 华宁县| 淮滨县| 乌兰县| 任丘市| 宜城市| 邵阳县| 新源县| 哈密市| 元朗区| 宁强县| 海淀区| 西盟| 嘉峪关市| 太谷县| 临潭县| 四会市| 封丘县| 玉环县|