成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? PHP不使用遞歸的無限級分類簡單實例
全站頭部文字 我要出現在這里
PHP不使用遞歸的無限級分類簡單實例 620 2024-01-22   

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

查看圖片

代碼:

<?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不使用遞歸的無限級分類簡單實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持綠夏網。



主站蜘蛛池模板: 快乐读书吧1-6年级推荐书目| 牛奶奶油是什么奶油| 英语书七年级下册单词表| 《x教程》韩剧免费观看| 赤牙×柒cp| 瑞斯·伊凡斯| 人口高质量发展形势与政策论文| 敬天法祖| 罗志祥小猪视频app全部| 女生宿舍在线观看| 意大利火环1990| 美女自愿戴镣铐调教室| 绿野仙踪电影| 感冒难受的图片| 上瘾泰国版| 保坂尚辉| spank| 扎西顿珠的个人资料简介 | 绝伦海女| 金装维尔梅| 六年级上册英语书电子版翻译| 无内裤全透明走秀视频| 周岁封酒| 芭芭拉·布薛特| 红旗车驾驶员个人主要事迹材料 | 国家励志奖学金个人主要事迹1500字 | 秦皇岛电视台| 活动评价| 循环小数除法50道| 老板娘2无间潜行 电影| 西海情歌歌词全文| footjob videos| 宋佳风平浪静| 白丝美女被挠脚心| 男女打扑克视频网站| 光脚踩| 美丽的坏女人中文字幕| 波多野结衣电影大全| 张柏芝惊艳照片| 还未入团思想汇报800字| 菊花台在线电视剧免费观看|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103