当我们需要生成一个无限分类的列表数据时,可以使用 PHP 的数组来进行返回,下面是生成无限分类列表数据的具体代码和步骤:
当我们需要生成一个无限分类的列表数据时,可以使用 PHP 的数组来进行返回,下面是生成无限分类列表数据的具体代码和步骤:
1.准备数据
首先,我们需要准备一个数组,包含分类列表数据的信息,如下所示:
$data = array(
array('id' => 1, 'name' => '电子产品', 'parent_id' => 0),
array('id' => 2, 'name' => '手机', 'parent_id' => 1),
array('id' => 3, 'name' => '笔记本电脑', 'parent_id' => 1),
array('id' => 4, 'name' => '华为手机', 'parent_id' => 2),
array('id' => 5, 'name' => '小米手机', 'parent_id' => 2),
array('id' => 6, 'name' => '戴尔电脑', 'parent_id' => 3),
array('id' => 7, 'name' => '华硕电脑', 'parent_id' => 3),
array('id' => 8, 'name' => '家用电器', 'parent_id' => 0),
array('id' => 9, 'name' => '冰箱', 'parent_id' => 8),
array('id' => 10, 'name' => '电视', 'parent_id' => 8),
array('id' => 11, 'name' => '海信电视', 'parent_id' => 10),
array('id' => 12, 'name' => '创维电视', 'parent_id' => 10)
);
2.编写递归函数
接下来,我们需要编写一个递归函数,用于将分类数据转换成树形结构,实现代码如下所示:
function buildTree($data, $parent_id = 0, $level = 0) {
static $tree = array();
foreach ($data as $item) {
if ($item['parent_id'] == $parent_id) {
$item['level'] = $level;
$tree[] = $item;
buildTree($data, $item['id'], $level + 1);
}
}
return $tree;
}
3.生成无限分类列表数据
最后,我们可以调用 buildTree
函数来生成无限分类列表数据,具体代码如下所示:
$data = array(
array('id' => 1, 'name' => '电子产品', 'parent_id' => 0),
array('id' => 2, 'name' => '手机', 'parent_id' => 1),
array('id' => 3, 'name' => '笔记本电脑', 'parent_id' => 1),
array('id' => 4, 'name' => '华为手机', 'parent_id' => 2),
array('id' => 5, 'name' => '小米手机', 'parent_id' => 2),
array('id' => 6, 'name' => '戴尔电脑', 'parent_id' => 3),
array('id' => 7, 'name' => '华硕电脑', 'parent_id' => 3),
array('id' => 8, 'name' => '家用电器', 'parent_id' => 0),
array('id' => 9, 'name' => '冰箱', 'parent_id' => 8),
array('id' => 10, 'name' => '电视', 'parent_id' => 8),
array('id' => 11, 'name' => '海信电视', 'parent_id' => 10),
array('id' => 12, 'name' => '创维电视', 'parent_id' => 10)
);
$tree = buildTree($data);
echo '<ul>';
foreach ($tree as $item) {
echo '<li>';
echo str_repeat('- ', $item['level']) . $item['name'];
echo '</li>';
}
echo '</ul>';
以上代码可以输出以下无限分类列表:
- 电子产品
- 手机
- 华为手机
- 小米手机
- 笔记本电脑
- 戴尔电脑
- 华硕电脑
- 家用电器
- 冰箱
- 电视
- 海信电视
- 创维电视
另外,我们还可以将上面的代码稍作修改,生成一个有层级关系的无限分类列表,具体代码如下所示:
function buildList($data, $parent_id = 0) {
$html = '<ul>';
foreach ($data as $item) {
if ($item['parent_id'] == $parent_id) {
$html .= '<li>';
$html .= $item['name'];
$html .= buildList($data, $item['id']);
$html .= '</li>';
}
}
$html .= '</ul>';
return $html;
}
$data = array(
array('id' => 1, 'name' => '电子产品', 'parent_id' => 0),
array('id' => 2, 'name' => '手机', 'parent_id' => 1),
array('id' => 3, 'name' => '笔记本电脑', 'parent_id' => 1),
array('id' => 4, 'name' => '华为手机', 'parent_id' => 2),
array('id' => 5, 'name' => '小米手机', 'parent_id' => 2),
array('id' => 6, 'name' => '戴尔电脑', 'parent_id' => 3),
array('id' => 7, 'name' => '华硕电脑', 'parent_id' => 3),
array('id' => 8, 'name' => '家用电器', 'parent_id' => 0),
array('id' => 9, 'name' => '冰箱', 'parent_id' => 8),
array('id' => 10, 'name' => '电视', 'parent_id' => 8),
array('id' => 11, 'name' => '海信电视', 'parent_id' => 10),
array('id' => 12, 'name' => '创维电视', 'parent_id' => 10)
);
$html = buildList($data);
echo $html;
以上代码可以输出以下有层级关系的无限分类列表:
- 电子产品
- 手机
- 华为手机
- 小米手机
- 笔记本电脑
- 戴尔电脑
- 华硕电脑
- 家用电器
- 冰箱
- 电视
- 海信电视
- 创维电视
沃梦达教程
本文标题为:php用数组返回无限分类的列表数据的代码


猜你喜欢
- php 读写json文件及修改json的方法 2022-10-08
- Laravel5.7框架安装与使用学习笔记图文详解 2023-01-04
- 基于PHP实现堆排序原理及实例详解 2023-04-20
- Laravel中正确地返回HTTP状态码方法示例 2023-02-13
- PHP中PDO关闭连接的方法问题 2023-05-09
- PHP时间处理类操作示例 2022-11-14
- 详解thinkphp中的volist标签 2022-10-05
- 如何利用PHP将word文档转html和pdf 2022-09-21
- PHP后台备份MySQL数据库的源码实例 2022-12-30
- php原生数据库分页的代码实例 2022-12-20