php编写一个函数,递归遍历,实现无限分类
封面图
•
2025-10-27
•
PHP
216
0
0
0
在 PHP 中,使用递归遍历实现**无限分类**(也叫多级分类、树形结构)是一个常见的需求。通常,数据是从数据库中获取的,比如一个包含 `id`, `parent_id`, `name` 的表。 下面我将为你提供一个完整的示例: --- ### ✅ 示例:PHP 递归遍历实现无限分类 #### 1. 假设数据库表结构如下(以 MySQL 为例): ```sql CREATE TABLE category ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, parent_id INT DEFAULT 0 ); ``` #### 2. 模拟数据(假设从数据库中获取的数据): ```php $data = [ ['id' => 1, 'name' => '电子产品', 'parent_id' => 0], ['id' => 2, 'name' => '手机', 'parent_id' => 1], ['id' => 3, 'name' => '电脑', 'parent_id' => 1], ['id' => 4, 'name' => '华为', 'parent_id' => 2], ['id' => 5, 'name' => '苹果', 'parent_id' => 2], ['id' => 6, 'name' => '笔记本', 'parent_id' => 3], ['id' => 7, 'name' => '台式机', 'parent_id' => 3], ['id' => 8, 'name' => '配件', 'parent_id' => 0], ['id' => 9, 'name' => '耳机', 'parent_id' => 8], ]; ``` --- #### 3. 编写递归函数构建树形结构 ```php function buildTree(array $data, $parentId = 0) { $tree = []; foreach ($data as $item) { if ($item['parent_id'] == $parentId) { $children = buildTree($data, $item['id']); if (!empty($children)) { $item['children'] = $children; } $tree[] = $item; } } return $tree; } ``` --- #### 4. 调用函数并输出结果 ```php $tree = buildTree($data); // 输出树形结构(可以是 HTML 或 JSON) echo "<pre>"; print_r($tree); echo "</pre>"; ``` --- ### ✅ 示例输出(简化版): ```php Array ( [0] => Array ( [id] => 1 [name] => 电子产品 [parent_id] => 0 [children] => Array ( [0] => Array ( [id] => 2 [name] => 手机 [parent_id] => 1 [children] => Array ( [0] => Array ( [id] => 4 [name] => 华为 [parent_id] => 2 [children] => Array ( ) ) [1] => Array ( [id] => 5 [name] => 苹果 [parent_id] => 2 [children] => Array ( ) ) ) ) [1] => Array ( [id] => 3 [name] => 电脑 [parent_id] => 1 [children] => Array ( [0] => Array ( [id] => 6 [name] => 笔记本 [parent_id] => 3 [children] => Array ( ) ) [1] => Array ( [id] => 7 [name] => 台式机 [parent_id] => 3 [children] => Array ( ) ) ) ) ) ) [1] => Array ( [id] => 8 [name] => 配件 [parent_id] => 0 [children] => Array ( [0] => Array ( [id] => 9 [name] => 耳机 [parent_id] => 8 [children] => Array ( ) ) ) ) ) ``` --- ### ✅ 如果需要生成 HTML 树形结构(如下拉菜单) ```php function renderTree(array $tree) { $html = '<ul>'; foreach ($tree as $item) { $html .= '<li>' . htmlspecialchars($item['name']); if (!empty($item['children'])) { $html .= renderTree($item['children']); } $html .= '</li>'; } $html .= '</ul>'; return $html; } echo renderTree($tree); ``` --- ### ✅ 总结 - 使用递归函数 `buildTree()` 来构建树形结构。 - 数据格式应包含 `id`, `parent_id`, `name` 等字段。 - 可以根据需要将结果渲染成 HTML、JSON 或其他格式。 如果你有具体的数据库查询语句或想要更复杂的结构(如带层级深度),也可以告诉我,我可以帮你扩展。
上一篇:
php获取上月的最后一天
下一篇:
PHP处理数组的常用函数?
标题录入,一次不能超过6条
留言
评论