PHP无限分类代码,支持数组格式化、直接输出菜单两种方式

PHP无限分类可以通过递归的方式,处理多层级分类数据,实现扁平化的存储和展示。本文将介绍两种方式:支持数组格式化和直接输出菜单,详细解释其使用方法和示例应用。

PHP无限分类可以通过递归的方式,处理多层级分类数据,实现扁平化的存储和展示。本文将介绍两种方式:支持数组格式化和直接输出菜单,详细解释其使用方法和示例应用。

支持数组格式化的PHP无限分类代码

实现思路

  • 通过递归方法,处理多层级数组中每个元素的子元素,最终返回格式化后的结果数组。
  • 递归方法会输入两个参数:原始数组和当前分类ID(默认为0,表示根分类)。
  • 对于数组中的每一个非根分类元素,都将其“归并”到一级分类下的子分类数组中。
  • 最后遍历所有一级分类的子分类,根据数组格式输出全部分类及其子分类组成的层级结构。

代码实现

以下代码展示了如何通过数组格式实现PHP无限分类。

function recursiveTree($arr, $id = 0, $html = ''){
    static $list = array();
    $html .= '    '; //展示效果缩进
    foreach($arr as $v){
        if($v['pid'] == $id){
            $v['html'] = $html;
            $list[] = $v;
            recursiveTree($arr, $v['id'], $html.'    ');
        }
    }
    return $list;
}

示例应用

下面是一个示例应用,这个应用中有一个多层级分类数据,我们想要将这个数据按照一定规则格式化展示。

//原始数组
$data = array(
    array('id' => 1, 'name' => '电子产品', 'pid' => 0),
    array('id' => 2, 'name' => '手机', 'pid' => 1),
    array('id' => 3, 'name' => '电脑', 'pid' => 1),
    array('id' => 4, 'name' => '笔记本电脑', 'pid' => 3),
    array('id' => 5, 'name' => '台式电脑', 'pid' => 3),
    array('id' => 6, 'name' => '家用电器', 'pid' => 0),
    array('id' => 7, 'name' => '洗衣机', 'pid' => 6),
    array('id' => 8, 'name' => '冰箱', 'pid' => 6),
);
//调用无限分类方法
$result = recursiveTree($data);
//输出分类菜单
foreach($result as $v){
    echo "<p>{$v['html']}{$v['name']}</p>";
}

以上示例将输出如下格式的分类菜单:

电子产品
    手机
    电脑
        笔记本电脑
        台式电脑
家用电器
    洗衣机
    冰箱

直接输出菜单的PHP无限分类代码

实现思路

  • 通过递归方法,将多层级数组的每个元素转化为HTML格式的列表输出。
  • 递归方法有两个输入参数:原始数组及当前分类ID(默认为0,表示根分类)。
  • 在递归方法中,首先将当前分类ID所对应的元素输出为列表。然后处理当前分类ID对应的子元素,递归调用自身,输出子元素的列表及其子元素的列表。
  • 最后遍历所有一级分类及其子分类,输出全部分类及其子分类组成的列表结构。

代码实现

以下代码展示了如何通过直接输出方式实现PHP无限分类。

function recursiveList($arr, $id = 0){
    $html = '';
    foreach($arr as $v){
        if($v['pid'] == $id){
            $html .= "<li>{$v['name']}";
            $html .= recursiveList($arr, $v['id']);
            $html .= "</li>";
        }
    }
    if(empty($html)){
        return '';
    }
    return "<ul>{$html}</ul>";
}

示例应用

下面是一个示例应用,这个应用中有一个多层级分类数据,我们想要将这个数据按照一定规则直接输出。

//原始数组
$data = array(
    array('id' => 1, 'name' => '电子产品', 'pid' => 0),
    array('id' => 2, 'name' => '手机', 'pid' => 1),
    array('id' => 3, 'name' => '电脑', 'pid' => 1),
    array('id' => 4, 'name' => '笔记本电脑', 'pid' => 3),
    array('id' => 5, 'name' => '台式电脑', 'pid' => 3),
    array('id' => 6, 'name' => '家用电器', 'pid' => 0),
    array('id' => 7, 'name' => '洗衣机', 'pid' => 6),
    array('id' => 8, 'name' => '冰箱', 'pid' => 6),
);
//调用无限分类方法
echo recursiveList($data);

以上示例将直接输出如下格式的分类菜单:

<ul>
    <li>电子产品
        <ul>
            <li>手机</li>
            <li>电脑
                <ul>
                    <li>笔记本电脑</li>
                    <li>台式电脑</li>
                </ul>
            </li>
        </ul>
    </li>
    <li>家用电器
        <ul>
            <li>洗衣机</li>
            <li>冰箱</li>
        </ul>
    </li>
</ul>

总之,PHP无限分类是一种很有用的分类数据处理方式,可以用于展示菜单、分类、标签等多种应用场景,两种方式均可根据不同需求选择使用。

本文标题为:PHP无限分类代码,支持数组格式化、直接输出菜单两种方式

基础教程推荐