本文小编为大家详细介绍“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数组,即无限极分类数组。