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

溫馨提示×

溫馨提示×

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

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

如何在PHP中實現一個無限級分類

發布時間:2020-12-23 15:08:24 來源:億速云 閱讀:124 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關如何在PHP中實現一個無限級分類,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

不用遞歸實現無限級分類,簡單測試了下性能比遞歸稍好一點點點,但寫得太復雜了,還是遞歸簡單方便點

如何在PHP中實現一個無限級分類

代碼:

<?php
$list = array(
  array('id'=>1, 'pid'=>0, 'deep'=>0, 'name'=>'test1'),
  array('id'=>2, 'pid'=>1, 'deep'=>1, 'name'=>'test2'),
  array('id'=>3, 'pid'=>0, 'deep'=>0, 'name'=>'test3'),
  array('id'=>4, 'pid'=>2, 'deep'=>2, 'name'=>'test4'),
  array('id'=>5, 'pid'=>2, 'deep'=>2, 'name'=>'test5'),
  array('id'=>6, 'pid'=>0, 'deep'=>0, 'name'=>'test6'),
  array('id'=>7, 'pid'=>2, 'deep'=>2, 'name'=>'test7'),
  array('id'=>8, 'pid'=>5, 'deep'=>3, 'name'=>'test8'),
  array('id'=>9, 'pid'=>3, 'deep'=>2, 'name'=>'test9'),
);
function resolve($list) {
  $newList = $manages = $deeps = $inDeeps = array();
  foreach ($list as $row) {
    $newList[$row['id']] = $row;
  }
  $list = null;
  foreach ($newList as $row) {
    if (! isset($manages[$row['pid']]) || ! isset($manages[$row['pid']]['children'][$row['id']])) {
      if ($row['pid'] > 0 && ! isset($manages[$row['pid']]['children'])) $manages[$row['pid']] = $newList[$row['pid']];
      $manages[$row['pid']]['children'][$row['id']] = $row;
    }
    if (! isset($inDeeps[$row['deep']]) || ! in_array($row['id'], $inDeeps[$row['deep']])) {
      $inDeeps[$row['deep']][] = array($row['pid'], $row['id']);
    }
  }
  krsort($inDeeps);
  array_shift($inDeeps);
  foreach ($inDeeps as $deep => $ids) {
    foreach ($ids as $m) {
      // 存在子欄目的進行轉移
      if (isset($manages[$m[1]])) {
        $manages[$m[0]]['children'][$m[1]] = $manages[$m[1]];
        $manages[$m[1]] = null;
        unset($manages[$m[1]]);
      }
    }
  }
  return $manages[0]['children'];
}

遞歸實現

function resolve2(& $list, $pid = 0) {
  $manages = array();
  foreach ($list as $row) {
    if ($row['pid'] == $pid) {
      $manages[$row['id']] = $row;
      $children = resolve2($list, $row['id']);
      $children && $manages[$row['id']]['children'] = $children;
    }
  }
  return $manages;
}

看完上述內容,你們對如何在PHP中實現一個無限級分類有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

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

php
AI

抚松县| 北流市| 洞头县| 定南县| 北海市| 碌曲县| 博爱县| 丁青县| 铅山县| 左云县| 平泉县| 南投市| 武平县| 应城市| 赤壁市| 紫云| 海阳市| 雷州市| 鹤山市| 海城市| 普宁市| 沙田区| 沿河| 健康| 嘉义县| 玉田县| 青铜峡市| 五家渠市| 平利县| 葵青区| 江油市| 普兰县| 宽城| 师宗县| 黔东| 屏东市| 玛纳斯县| 河东区| 巴中市| 柳河县| 清水县|