php 简单的树形结构,php简单实现无限分类树形列表的方法

搜索热词

本文实例讲述了PHP简单实现无限分类树形列表的方法。分享给大家供大家参考。具体如下:

array('id' => 1,'pid' => 0,'name' => '江西省'),2 => array('id' => 2,'name' => '黑龙江省'),3 => array('id' => 3,'pid' => 1,'name' => '南昌市'),4 => array('id' => 4,'pid' => 2,'name' => '哈尔滨市'),5 => array('id' => 5,'name' => '鸡西市'),6 => array('id' => 6,'pid' => 4,'name' => '香坊区'),7 => array('id' => 7,'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,'name' => '哈尔滨师范大学'),13 => array('id' => 13,'name' => '赣州市'),14 => array('id' => 14,'pid' => 13,'name' => '赣县'),15 => array('id' => 15,'name' => '于都县'),16 => array('id' => 16,'pid' => 14,'name' => '茅店镇'),17 => array('id' => 17,'name' => '大田乡'),18 => array('id' => 18,'pid' => 16,'name' => '义源村'),19 => array('id' => 19,'name' => '上坝村'),20 => array('id' => 20,'name' => '广东省'),21 => array('id' => 21,'pid' => 20,'name' => '广州市'),);

$t = array();

foreach ($items as $id => $item) {

if ($item['pid']) {

$items[$item['pid']][$item['id']] = &$items[$item['id']];

$t[] = $id;

}

}

foreach($t as $u) {

unset($items[$u]);

}

echo "";

print_r($items);

希望本文所述对大家的PHP程序设计有所帮助。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现无限分类方法有多种,其中包括递归和非递归两种方式。下面分别介绍一下这两种方法实现。 1. 递归实现无限分类 递归实现无限分类方法是将分类数据作为一个树形结构来处理。具体实现步骤如下: (1)从数据库中获取所有分类数据,并按照父子关系组织为树形结构。 (2)遍历树形结构,输出每个分类的名称以及子分类的名称。 (3)对于每个子分类,重复步骤(2)。 下面是一个递归实现无限分类的示例代码: ```php function getCategoryTree($parent_id = 0, $level = 0) { $categories = getCategoryByParentId($parent_id); if (count($categories) > 0) { foreach ($categories as $category) { echo str_repeat('-', $level) . $category['name'] . '<br>'; getCategoryTree($category['id'], $level + 1); } } } function getCategoryByParentId($parent_id) { // 从数据库中获取 $parent_id 的所有子分类数据 // ... return $categories; } // 输出所有分类 getCategoryTree(); ``` 2. 非递归实现无限分类 非递归实现无限分类方法是使用堆栈(或队列)来处理分类数据。具体实现步骤如下: (1)从数据库中获取所有分类数据,并按照父子关系组织为一个数组。 (2)将根分类(即 parent_id 为 0 的分类)入栈。 (3)从堆栈中取出一个分类,并输出该分类的名称。 (4)将该分类的所有子分类依次入栈。 (5)重复步骤(3)和(4),直到堆栈为空。 下面是一个非递归实现无限分类的示例代码: ```php function getCategoryTree() { $categories = getCategoryByParentId(0); $stack = array(); foreach ($categories as $category) { array_push($stack, array('category' => $category, 'level' => 0)); } while (count($stack) > 0) { $current = array_pop($stack); echo str_repeat('-', $current['level']) . $current['category']['name'] . '<br>'; $children = getCategoryByParentId($current['category']['id']); foreach ($children as $child) { array_push($stack, array('category' => $child, 'level' => $current['level'] + 1)); } } } function getCategoryByParentId($parent_id) { // 从数据库中获取 $parent_id 的所有子分类数据 // ... return $categories; } // 输出所有分类 getCategoryTree(); ``` 以上就是php实现无限分类的两种方法。从实现难度和效率上来看,递归方法简单,但对于数据量较大的情况,可能会导致栈溢出。非递归方法虽然复杂一些,但可以处理更大的数据量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值