当我们需要生成一个无限分类的列表数据时,可以使用 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用数组返回无限分类的列表数据的代码 - Python技术站