Loading

php封装一个常用的助手函数文件

/**
 * @desc  二维数组多个字段分装
 */
if (!function_exists('array_group_by_multiple')) {
    // 自定义函数进行分组
    function array_group_by_multiple($array, $keys)
    {
        $result = [];
        foreach ($array as $item) {
            // 从第一个键开始
            $current_level = &$result;
            foreach ($keys as $key) {
                // 如果当前键不存在,则创建一个空数组
                if (!isset($current_level[$item[$key]])) {
                    $current_level[$item[$key]] = [];
                }
                // 移动到下一个嵌套级别
                $current_level = &$current_level[$item[$key]];
            }
            // 到达最后一个键,将原始项添加到数组中
            $current_level[] = $item;
        }
        return $result;
    }
}

/**
 * @desc  获取多级分类
 */
if (!function_exists('getTree')) {
    function getTree($data, $p_id = 0, $level = 0)
    {
        $tree = array();
        foreach ($data as $k => $v) {
            $v['level'] = $level;
            if ($v["p_id"] == $p_id) {
                unset($data[$k]);
                if (!empty($data)) {
                    $children = getTree($data, $v["id"], $level + 1);
                    if (!empty($children)) {
                        $v["children"] = $children;
                    } else {
                        $v['children'] = array();
                    }
                } else {
                    $v['children'] = array();
                }
                $tree[] = $v;
            }
        }
        return $tree;
    }
}

/**
 * @desc 二维数组排序
 */
if (!function_exists('multiArraySort')) {
    function multiArraySort($array, $field, $ascending = true)
    {
        $fieldValues = array_column($array, $field);
        $sortFlags   = $ascending ? SORT_ASC : SORT_DESC;
        array_multisort($fieldValues, $sortFlags, $array);
        return $array;
    }
}

/**
 * @desc xml转json
 */
if (!function_exists('xmlToJsonArr')) {
    function xmlToJsonArr($data)
    {
        if (substr($data, 0, 5) != "<?xml") return;
        $xml = simplexml_load_string($data); //xml转object
        $xml = json_encode($xml);  //objecct转json
        return json_decode($xml, true);
    }
}

/**
 * @desc 集合转为数组
 */
if (!function_exists('convertToArrays')) {
    function convertToArrays($data)
    {
        // 如果数据是集合,递归转换为数组
        if ($data instanceof \Illuminate\Support\Collection) {
            return $data->map(function ($item) {
                return convertToArrays($item);
            })->toArray();
        }

        // 如果数据是模型实例,转换为数组
        if ($data instanceof \Illuminate\Database\Eloquent\Model) {
            return $data->toArray();
        }

        // 如果数据是标量值,直接返回
        if (is_scalar($data)) {
            return $data;
        }

        // 如果数据是其他类型,尝试转换为数组
        return (array)$data;
    }
}

/**
 * @desc 数组转json
 */
if (!function_exists('enJson')) {
    function enJson($params)
    {
        return json_encode($params, 320);
    }
}


/**
 * @desc json转数组
 */
if (!function_exists('deJson')) {
    function deJson($params)
    {
        return json_decode($params, true);
    }
}

 

posted @ 2025-04-16 16:48  Carvers  阅读(12)  评论(0)    收藏  举报