通用递归
/**
* 无限极分类
* @param array $list
* @param string $pk
* @param string $path
* @param string $children
* @return array
*/
function getTree($list, $pk = 'id', $path = 'path', $children = 'children')
{
$tree = [];
$packData = [];
//重新设置键值
foreach ($list as $data) {
$packData[$data[$pk]] = $data;
}
foreach ($packData as $key => $val) {
if ($val[$path] == 0) {
//顶级分类
$tree[] = &$packData[$key];
} else {
//关联子分类 使用引用方式递归下级数据
$packData[$val[$path]][$children][] = &$packData[$key];
}
}
return $tree;
}