zoukankan      html  css  js  c++  java
  • PHP-无限级分类(迭代法创建)

     1 <?php
     2 $area = array(
     3     array('id' => 1, 'name' => '安徽', 'parent' => 0),
     4     array('id' => 2, 'name' => '海淀', 'parent' => 7),
     5     array('id' => 3, 'name' => '濉溪县', 'parent' => 5),
     6     array('id' => 4, 'name' => '昌平', 'parent' => 7),
     7     array('id' => 5, 'name' => '淮北', 'parent' => 1),
     8     array('id' => 6, 'name' => '朝阳', 'parent' => 7),
     9     array('id' => 7, 'name' => '北京', 'parent' => 0),
    10     array('id' => 8, 'name' => '上地', 'parent' => 2)
    11 );
     1 #找父栏目、父父栏目#
     2 function parent_tree($arr, $id)
     3 {
     4     $par_arr = array();
     5 
     6 //var_dump($id);
     7     while ($id !== 0) {
     8 //外层循环的作用:0表示最顶层的栏目 等于0就表示无父栏目/父父栏目 只要不等于0就表示有上级目录 则循环
     9         foreach ($arr as $v) {
    10 //内层循环的作用:遍历数组查找出来$id对应的值  若找到了  该值就是它自身(第一次就是它自己)和父栏目/父父栏目..然后存入数组并终止循环(break)
    11             if ($v['id'] == $id) {
    12                 $par_arr[] = $v;
    13                 $id = $v['parent'];
    14                 break;
    15             }
    16         }
    17     }
    18     return $par_arr;
    19 }
     1 #找子孙栏目#
     2 function sub_tree($arr, $parent = 0)
     3 {
     4     $task = array($parent);
     5 //创建任务表
     6     $subs = array();
     7 //存子孙栏目的数组
     8     while (!empty($task))//如果任务表不为空 就表示要做任务
     9     {
    10         $flag = false;//默认没找到子树
    11         foreach ($arr as $k => $v) {
    12             if ($v['parent'] == $parent) {
    13                 $subs[] = $v;
    14             }
    15             array_push($task, $v['id']);//借助栈 把新的地区的id压入栈
    16             $parent = $v['id'];
    17             unset($arr[$k]);
    18 //把找到的单元unset掉
    19             $flag = true;
    20         }
    21     }
    22     if (!$flag) {//表示没找到子树
    23         array_pop($task);
    24         $parent = end($task);
    25     }
    26     /*echo '<pre>'; print_r($task);            echo '</pre>';*/
    27 
    28     return $subs;
    29 }
  • 相关阅读:
    Nginx安装
    node.js搭建vue脚手架
    Oracle引入数据
    MVC引入Junit单元测试
    Git版本控制器
    IDEA-Maven
    SSM框架整合
    【测试基础第五篇】测试用例编写和评审
    【测试基础第四篇】测试用例设计方法
    【测试基础第三篇】需求测试分析
  • 原文地址:https://www.cnblogs.com/ggkxg/p/6046681.html
Copyright © 2011-2022 走看看