/**
 * 无限级分类数据处理(数据库数据)
 * @param $data         数据库查询数据
 * @param string $id 主键
 * @param string $pid 上级
 * @param string $child 子级名
 * @param int $max_pid 最高级pid
 * @return array|mixed  返回处理好的数组
 */
function disposeInfiniteData($data, $id = 'id', $pid = 'pid', $child = "child", $max_pid = 0)
{
    $newData = [];
    //数据库中信息预处理
    foreach ($data as $v) {
        $newData[$v[$id]] = $v;
    }
    $return_arr = [];
    foreach ($newData as $k => $v) {
        if ($v['pid'] == $max_pid) {
            $return_arr[] =& $newData[$k];
        } else {
            $newData[$v[$pid]][$child][] =& $newData[$k];
        }
    }
    return $return_arr;
}