<?php

// 测试数组数据
$array = array(
  array('id'=>'1','title'=>'父级分类1','pid'=>'0'),
  array('id'=>'2','title'=>'父级分类2','pid'=>'0'),
  array('id'=>'3','title'=>'父级分类3','pid'=>'0'),
  array('id'=>'4','title'=>'子分类1','pid'=>'1'),
  array('id'=>'5','title'=>'子分类2','pid'=>'1'),
  array('id'=>'6','title'=>'子分类3','pid'=>'2')
);

// 实现二维数组形式

  function getTree1($array, $pid=0)
  {
    static $data = array();
    foreach($array as $key=>$val){
      if($val['pid'] == $pid){
        $data[] = $val;
        unset($array[$key]);
        getTree1($array, $val['id']);  // 进行递归
      }
    }
    return $data;
  }

  

  // 实现多维数组形式
  function getTree2($array)
  {
    $refer = array();
    $tree = array();
    foreach($array as $key=>$val){
      $refer[$val['id']] = &$array[$key];
    }
    foreach($array as $k => $v){
      $pid = $v['pid']; //获取当前分类的父级id
      if($pid == 0){
        $tree[] = &$array[$k]; //顶级栏目
      }else{
        if(isset($refer[$pid])){
          $refer[$pid]['son'][] = &$array[$k]; //如果存在父级栏目,则添加进父级栏目的子栏目数组中
        }
      }
    }
    return $tree;
  }

$trees = getTree1($array);
$trees = getTree2($array);
// 查看数据
echo '<pre>';
print_r($trees);
echo '</pre>';

php实现无限极分类(多维数组 / 二维数组)形式的更多相关文章

  1. PHP无限极分类

      当你学习php无限极分类的时候,大家都觉得一个字“难”我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究. 到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱, ...

  2. PHP无限极分类,多种方法|很简单,这里说的很详细,其它地方说的很不好懂

    当你学习php无限极分类的时候,大家都觉得一个字"难"我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究.   到网上一搜php无限极分类,很多,但好多都是一 ...

  3. PHP无限极分类的几种方法

    导读:项目开发,经常栏目要做到无限极分类,几种方法PHP无限极分类的几种方法 复制代码 代码如下:namespace Util;class Category{static public functio ...

  4. thinkphp5.0无限极分类及格式化输出

    首先我们来看数据表 从上图中可以发现,中国下有贵州,北京两个子节点,而北京有天安门一个子节点,纽约的子节点是"纽约的子类". 从pid为0看出,中国和纽约是顶级节点. 因为贵州的p ...

  5. [thinkphp] 无限极分类

    <?php /* * 无限极分类 类 */ header("Content-Type: text/html; charset=UTF-8"); Class Category ...

  6. PHP无限极分类详谈

    当你学习php无限极分类的时候,大家都觉得一个字“难”我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究. 到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱,代码 ...

  7. php 无限极分类,根据父级 找子级

    /** * @param $data 数据(二维数组格式) * @param $adminId 管理员ID * @param $pid 权限的上级ID * @param int $level 水平变量 ...

  8. js实现无限极分类

    转载注明出处!!! 转载注明出处!!! 转载注明出处!!! 因为要实现部门通讯录,后台传来的数据是直接从数据库里拿的部门表,所以没有层级分类,只有parentId表示从属关系,所以分类的事情就交给我来 ...

  9. PHP无限极分类实现

    简单版的PHP生成无限极分类代码.其中包括了数据库设计.以及输出分类HTML代码. SQL代码 CREATE TABLE `district` ( `id` int(10) unsigned NOT ...

  10. 无限极分类php实现—查子孙树、家谱树

    1.本文更新日期:2018/05/20 , 亲测可用,在原有基础上进行增强和 详细化 . 2.面包屑导航 和 子孙树 效果图如下: 3.代码: <?php // 无限级分类中,查家谱树(面包屑导 ...

随机推荐

  1. Android Studio中如何使用自定义的framework库

    在安卓app开发中,通常不会遇到需要使用自定义framework库的情况,使用的都是标准的内核库.但也有例外,比如针对定制化的ROM,ROM厂商可能在ROM中对安卓源码做过修改,对应用层app暴露出与 ...

  2. Return Merchandise Authorization (RMA)

    From : https://community.dynamics.com/nav/b/olofsimrendynamicsnavblog/archive/2016/08/30/return-merc ...

  3. 40行Python制作超炫酷动态排序图,有了它高逼格PPT再也不愁!

        本文首发于量化投资与机器学习 转载于  https://mp.weixin.qq.com/s/KaB_7oXZf0_IV97y0pRPmQ 前言 最近,这种动态排序条形图视频超级火,如下图: ...

  4. .net core下获取自身服务器地址

    网上的例子千篇一律都是Request.HttpContext.Connect.Connection.XX这种 或者依赖于IHttpContextAccessor的 而我的场景是在非控制器流程获取自身服 ...

  5. webMvcConfigurer的详情

                  摘要 Spring的WebMvcConfigurer接口提供了很多方法让我们来定制SpringMVC的配置.而且Spring还提供了WebMvcConfigurerAdap ...

  6. 18、Memento 备忘录模式

    例如:用于记录快照(顺势状态).存盘 1.Memento Memento设计模式是一种软件设计模式,用于将对象回滚到其先前状态.它是行为设计模式的一部分,与算法和对象之间的职责分配有关. 行为模式描述 ...

  7. SQL关联查询

    从2张或多张表中,取出有关联的数据 关联查询一共有几种情况: 内连接:INNER JOIN .CROSS JOIN (1)形式一 select 字段列表 from A表 inner join B表 o ...

  8. 洛谷P3513 [POI2011]KON-Conspiracy

    洛谷P3513 [POI2011]KON-Conspiracy 题目描述 Byteotia的领土被占领了,国王Byteasar正在打算组织秘密抵抗运动. 国王需要选一些人来进行这场运动,而这些人被分为 ...

  9. 最火热的极速开发框架Spring Boot

    Spring Boot是Spring家族中的一个全新的框架,它用来简化Spring应用程序的创建和开发过程,也可以说Spring Boot能简化我们之前采用Spring mvc + Spring + ...

  10. C#LeetCode刷题之#226-翻转二叉树(Invert Binary Tree)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4080 访问. 翻转一棵二叉树. 输入: 4    /   \   ...