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无限分类代码,支持数组格式化、直接输出菜单两种方式 - Python技术站