/**
* treeData 生成树状数据
* @param array $items 原数据
* @param string $son 存放孩子节点字段名
* @param string $id 排序显示的键,一般是主键
* @param array $pid 父id
* @return array 树状数据
*/
protected function treeData(array $items=[], $pid='parent_id', $id='id', $son='children')
{
$tree =[];
$tmpData = []; //临时数据
foreach ($items as $item) {
$tmpData[$item[$id]] = $item;
}
foreach ($items as $item) {
if (isset($tmpData[$item[$pid]])) {
$tmpData[$item[$pid]][$son][] = &$tmpData[$item[$id]];
} else {
$tree[] = &$tmpData[$item[$id]];
}
}
unset($tmpData);
return $tree;
}