php用数组返回无限分类的列表数据的代码

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

基础教程推荐