本文小编为大家详细介绍“php无限极分类数组如何放”,内容详细,步骤清晰,细节处理妥当,希望这篇“php无限极分类数组如何放”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
递归方式
递归方式是php无限极分类数组中最常用的方式,它依靠函数的递归调用实现分类数据的构建。
递归方式的写法如下:
/**
* 无限极分类
* @param array $data 分类数据
* @param int $pid 父ID
* @param int $level 层级数
* @return array 分类数组
*/
function getTree($data, $pid = 0, $level = 0) {
$tree = [];
foreach ($data as $val) {
if ($val['parent_id'] == $pid) {
$val['level'] = $level;
$val['children'] = getTree($data, $val['id'], $level + 1);
$tree[] = $val;
}
}
return $tree;
}
以上代码中,getTree函数接收三个参数,分别是分类数据$ data、父ID $ pid和层级数$ level。该函数首先创建一个$ tree数组,然后遍历分类数据,如果当前分类项的父ID等于$ pid,则将其加入$ tree数组。每个分类项都会增加一个level属性,表示当前层级数。同时,getTree函数会递归调用自己,让子分类数组作为参数传入,从而使得子分类项也能按照相同的方式处理。
循环方式
循环方式是另一种php无限极分类数组中的处理方式,它主要通过循环嵌套来实现分类数据的构建。
循环方式的写法如下:
/**
* 无限极分类
* @param array $data 分类数据
* @return array 分类数组
*/
function getTree($data) {
$tree = [];
$node = [];
foreach ($data as $val) {
$node[$val['id']] = $val;
}
foreach ($node as $key => &$val) {
if (isset($node[$val['parent_id']])) {
$node[$val['parent_id']]['children'][] = &$val;
} else {
$tree[] = &$val;
}
}
return $tree;
}
以上代码中,getTree函数接收一个参数$ data,表示分类数据。该函数首先创建一个$ tree数组和一个$ node数组,并将$ data数据放入$ node数组中。接着,foreach循环遍历$ node数组,如果当前分类项的父ID在$ node数组中,则将当前分类项加入该父分类项的children子数组中。
由于$ node数组中的元素是按照分类ID存放的,所以如果待处理的分类项还没有被遍历到,则说明该分类项是顶级分类,于是可以把该分类项直接加入$ tree数组中。函数最终返回$ tree数组,即无限极分类数组。
版权声明:除特别声明外,本站所有文章皆是本站原创,转载请以超链接形式注明出处!