无限分类数据树形格式化

<?php
 
/**
 * 此方法由@Tonton 提供
 * http://my.oschina.net/u/918697
 * @date 2012-12-12 
 */
function genTree5($items) { 
    foreach ($items as $item) 
        $items[$item[‘pid‘]][‘son‘][$item[‘id‘]] = &$items[$item[‘id‘]]; 
    return isset($items[0][‘son‘]) ? $items[0][‘son‘] : array(); 

 
/**
 * 将数据格式化成树形结构
 * @author Xuefen.Tong
 * @param array $items
 * @return array 
 */
function genTree9($items) {
    $tree = array(); //格式化好的树
    foreach ($items as $item)
        if (isset($items[$item[‘pid‘]]))
            $items[$item[‘pid‘]][‘son‘][] = &$items[$item[‘id‘]];
        else
            $tree[] = &$items[$item[‘id‘]];
    return $tree;
}
 
$items = array(
    1 => array(‘id‘ => 1, ‘pid‘ => 0, ‘name‘ => ‘江西省‘),
    2 => array(‘id‘ => 2, ‘pid‘ => 0, ‘name‘ => ‘黑龙江省‘),
    3 => array(‘id‘ => 3, ‘pid‘ => 1, ‘name‘ => ‘南昌市‘),
    4 => array(‘id‘ => 4, ‘pid‘ => 2, ‘name‘ => ‘哈尔滨市‘),
    5 => array(‘id‘ => 5, ‘pid‘ => 2, ‘name‘ => ‘鸡西市‘),
    6 => array(‘id‘ => 6, ‘pid‘ => 4, ‘name‘ => ‘香坊区‘),
    7 => array(‘id‘ => 7, ‘pid‘ => 4, ‘name‘ => ‘南岗区‘),
    8 => array(‘id‘ => 8, ‘pid‘ => 6, ‘name‘ => ‘和兴路‘),
    9 => array(‘id‘ => 9, ‘pid‘ => 7, ‘name‘ => ‘西大直街‘),
    10 => array(‘id‘ => 10, ‘pid‘ => 8, ‘name‘ => ‘东北林业大学‘),
    11 => array(‘id‘ => 11, ‘pid‘ => 9, ‘name‘ => ‘哈尔滨工业大学‘),
    12 => array(‘id‘ => 12, ‘pid‘ => 8, ‘name‘ => ‘哈尔滨师范大学‘),
    13 => array(‘id‘ => 13, ‘pid‘ => 1, ‘name‘ => ‘赣州市‘),
    14 => array(‘id‘ => 14, ‘pid‘ => 13, ‘name‘ => ‘赣县‘),
    15 => array(‘id‘ => 15, ‘pid‘ => 13, ‘name‘ => ‘于都县‘),
    16 => array(‘id‘ => 16, ‘pid‘ => 14, ‘name‘ => ‘茅店镇‘),
    17 => array(‘id‘ => 17, ‘pid‘ => 14, ‘name‘ => ‘大田乡‘),
    18 => array(‘id‘ => 18, ‘pid‘ => 16, ‘name‘ => ‘义源村‘),
    19 => array(‘id‘ => 19, ‘pid‘ => 16, ‘name‘ => ‘上坝村‘),
);
echo "<pre>";
print_r(genTree5($items));
print_r(genTree9($items));

时间: 2024-10-08 17:42:19

无限分类数据树形格式化的相关文章

TreeView递归绑定无限分类数据

实现一个动态绑定,无限级分类数据时,需要将数据绑定到TreeView控件,分类表的结构是这样的: 字段 类型 Id int ParentId int Name Nvarchar(64) 实现数据绑定: private void ControlsDataBind() { tvCategory.Nodes.Clear(); List<Models.Category> types = CommonNews.Helper.OperateContext.Current.LoadNewsTypes();

不用递归实现无限分类数据的树形格式化

<?php /** * 此方法由@Tonton 提供 * http://my.oschina.net/u/918697 * @date 2012-12-12 */ function genTree5($items) { foreach ($items as $item) $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']]; return isset($items[0]['son']) ? $items[0]['son

数据表的无限分类

一.什么是无限分类? 无限级别的向下分类 二.无限分类数据表的设计 id name pid path  (级别) 1 国际新闻   0 0  (顶级分类) 2 国内新闻   0 0  (顶级分类) 3 国际娱乐新闻   1 0-3  (上级分类级别-本分类主键ID) 4 国际体育新闻   1 0-4 5 国内娱乐新闻   2 0-5 6 国内体育新闻   2 0-6 7 足球新闻   4 0-4-7 8 篮球新闻   6 0-6-8 原文地址:https://www.cnblogs.com/zh

php处理无限极分类数据的两种方式

开发过程中,经常会遇到处理无限分类数据,这里就介绍一下处理无限分类数据的两种方式,有不对的地方,还望多多指正. //测试数据 $array=array( ['id'=>1,'parent_id'=>0,'name'=>1], ['id'=>2,'parent_id'=>0,'name'=>2], ['id'=>3,'parent_id'=>1,'name'=>3], ['id'=>4,'parent_id'=>1,'name'=>4]

无限分类三:递归

第一步,获取全部数据 第二部,写一个子分类的函数 第三,写一个递归循环函数 代码: /** * 查询所有数据 并且缓存 * */ public function authData(){ $res = $this->order('listorder asc')->select(); // 格式化 foreach($res as $k=>$v){ $result[$v['id']] = $v; } Cache::set('auth',$result); return $result; } /

PHP无限分类树算法相关

一.找儿子 1.引用算法找儿子 /**  * 创建子节点树形数组  * 参数  * $ar 数组,邻接列表方式组织的数据  * $id 数组中作为主键的下标或关联键名  * $pid 数组中作为父键的下标或关联键名  * 返回 多维数组  **/ function find_child($ar, $id='id', $pid='pid') {     foreach($ar as $v) $t[$v[$id]] = $v;     foreach ($t as $k => $item){    

php不用递归完成无限分类,从表设计入手完整演示过程

无限分类是什么就不废话了,可以用递归实现,但是递归从数据库取东西用递归效率偏低,如果从表设计入手,就很容易做到网站导航的实现,下面是某论坛导航,如下图 网上无限分类大多不全面,今天我会从设计表开始, 首先我们先做视图界面, <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>白超华-博客园</title> &

无限分类1

连接上一个 无限分类 一.新建一个商品表 cid对应上面的ID 二. //获取所有的数据 $pdo = new PDO("mysql:host=localhost;dbname=lamp108",'root',''); $pdo->query("set names gbk"); $stmt = $pdo->query("select * from cate2"); $data = $stmt->fetchAll(2); func

递归无限分类笔记

最近项目都上线了每天巩固一下php知识,下面是关于递归无限分类的比较供大家参考! 数据库一个表就可以了,增加一个parendid字段 也就是子级分类 ,排序大家也可以加一下字段. CREATE TABLE `category` (   `id` int(11) NOT NULL,   `name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,   `sort_order` int(11) DEFAULT NULL,   `parendid` int(