/**
* 栏目无限级分类
* @param $data array 待排序数组
* @param $pid int 要查找的顶级分类
* @param string $field 查找的字段
* @param string $childNode 子节点名称
* @return array
*/
function unlimitedSort($data, $pid, $field = 'parent_id', $childNode = 'child')
{
$tree = [];
foreach ($data as $item) {
if ($item[$field] == $pid) {
$item[$childNode] = unlimitedSort($data, $item['id'], $field, $childNode);
// 卸载掉空的数组元素
if ($item[$childNode] == null) {
unset($item[$childNode]);
}
$tree[] = $item;
}
}
return $tree;
}
写个数组试验一下
$array = [
['id' => 1, 'pid' => 0, 'title' => '小米'],
['id' => 2, 'pid' => 1, 'title' => '智能穿戴设备'],
['id' => 3, 'pid' => 1, 'title' => '手机'],
['id' => 4, 'pid' => 2, 'title' => '手环'],
['id' => 5, 'pid' => 3, 'title' => '小米9'],
['id' => 6, 'pid' => 0, 'title' => '华为'],
];
那么输出结果为
$r = unlimitedSort($array, 0, 'pid');
print_r($r);