common随笔记录方法

/**
* 重置多维数组索引
* @param $array
* @return array
*/

    function reform_keys($array){

        if(!is_array($array)){

            return $array;

        }

        $keys = implode('', array_keys($array));

        if(is_numeric($keys)){

            $array = array_values($array);

        }

        $array = array_map('reform_keys', $array);

        return $array;

    };
	
	
	
	/**
     * ip解析城市
     * @param string $ip
     * @return mixed
     */
    function GetIpLookup($ip = ''){

        $url = 'http://ip-api.com/json/'. $ip.'?lang=zh-CN';
        $res = curl_http($url,[],"get");;
        $json = json_decode($res,true);

        if(isset($json['status']) && $json['status'] == 'success'){

            $arr['regionName'] =  $json['regionName'];
            $arr['city'] =  $json['city'];

            unset($json);

        }else{

            $arr['regionName'] =  '未知';
            $arr['city'] =  '未知';

        }

        return $arr;

    }
	
	/*
	**多维数组中是否存在该字段
	*/
	 function deep_in_array($value, $array) {
        foreach($array as $item) {
            if(!is_array($item)) {
                if ($item == $value) {
                    return true;
                } else {
                    continue;
                }
            }
            if(in_array($value, $item)) {
                return true;
            } else if(deep_in_array($value, $item)) {
                return true;
            }
        }
        return false;
    }
	
	
	
	
	/**
     * 二维数组中取最大值
     * @param $arr
     * @param $field
     * @return bool|mixed
     */
    function searchmax($arr, $field) // 最小值 只需要最后一个max函数  替换为 min函数即可
    {
        if (!is_array($arr) || !$field) { //判断是否是数组以及传过来的字段是否是空
            return false;
        }
        $temp = array();
        foreach ($arr as $key => $val) {
            $temp[] = $val[$field]; // 用一个空数组来承接字段
        }
        return max($temp);  // 用php自带函数 max 来返回该数组的最大值,一维数组可直接用max函数
    }
	
	
	
	/** *   生成某个范围内的随机时间 *
     * @param <type> $begintime  起始时间 格式为 Y-m-d H:i:s * @param <type> $endtime
     *   结束时间 格式为 Y-m-d H:i:s   */
    function randomDate($begintime, $endtime="")
    {
        $begin = strtotime($begintime);
        $end = $endtime == "" ? mktime() : strtotime($endtime);
        $timestamp = rand($begin, $end);
        return date("Y-m-d H:i:s", $timestamp);
    }
	
	
	
	/**
     * 随机打乱二维数组顺序
     * @param $array
     * @return array
     */
    function shuffle_assoc($lists)
    {
        if(!is_array($lists)){
            return $lists;
        }else{
            $keys = array_keys($lists);
            //打乱数组的键排序
            shuffle($keys);
            $result = array();
            foreach ($keys as $k=> $key){
                $result[$k] = $lists[$key];
            }
        }
        return $result;
    }
	
	
	/**
     * 二维数组去掉重复值
     * @param $array
     * @return array
     */
    function array_unique_fb($array)
    {
        $out = array();
        foreach ($array as $key => $value) {
            if (!in_array($value, $out)) {
                $out[$key] = $value;
            }
        }
        $out = array_values($out);
        return $out;
    }
	
	
	function set_http_request($url, $headers, $params = array(), $method = "GET")
{
    $ci = curl_init();
    curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ci, CURLOPT_TIMEOUT, 30);

    curl_setopt($ci, CURLOPT_CUSTOMREQUEST, $method);

    curl_setopt($ci, CURLOPT_URL, $url);
    curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ci, CURLOPT_HEADER, FALSE);

    curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查
    curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在

    if ($headers != "") {
        curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
    } else {
        curl_setopt($ci, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
    }
    switch (strtoupper($method)) {
        case 'POST':
            curl_setopt($ci, CURLOPT_POST, TRUE);

            curl_setopt($ci, CURLOPT_POSTFIELDS, $params);
            break;
        case 'PUT':
            curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'PUT');

            curl_setopt($ci, CURLOPT_POSTFIELDS, $params);

            break;
        case 'PATCH':
            curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'PATCH');

            curl_setopt($ci, CURLOPT_POSTFIELDS, $params);

            break;
        case 'DELETE':
            curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');

            curl_setopt($ci, CURLOPT_POSTFIELDS, $params);

            break;
        default:
            curl_setopt($ci, CURLOPT_HTTPGET, TRUE);
            break;
    }
    $response = curl_exec($ci);
    $httpCode = curl_getinfo($ci);
    curl_close($ci);
    return $response;
}
	//还原科学计数
 function decimalnotation($num){
    $parts = explode('E', $num);
    if (count($parts) != 2) {
        return $num;
    }
    $exp = abs(end($parts)) + 3;
    $decimal = number_format($num, $exp, '.', '');
    $decimal = rtrim($decimal, '0');

    return rtrim($decimal, '.');
}

/**

数据脱敏
@param $string 需要脱敏值
@param int $start 开始
@param int $length 结束
param string $re 脱敏替代符号
return bool|string
例子:
dataDesensitization('13126989876', 3, 4); //131****9876
dataDesensitization('张三四', 0, -1); //**四
*/

 function desensitization($string, $start = 0, $length = 0, $re = '*')
{
    if (empty($string)) {
        return false;
    }
    $strarr = array();
    $mb_strlen = mb_strlen($string);
    while ($mb_strlen) {//循环把字符串变为数组
        $strarr[] = mb_substr($string, 0, 1, 'utf8');
        $string = mb_substr($string, 1, $mb_strlen, 'utf8');
        $mb_strlen = mb_strlen($string);
    }
    $strlen = count($strarr);
    $begin = $start >= 0 ? $start : ($strlen - abs($start));
    $end = $last = $strlen - 1;
    if ($length > 0) {
        $end = $begin + $length - 1;
    } elseif ($length < 0) {
        $end -= abs($length);
    }
    for ($i = $begin; $i <= $end; $i++) {
        $strarr[$i] = $re;
    }
    if ($begin >= $end || $begin >= $last || $end > $last) return false;
    return implode('', $strarr);
}

/**
* 生成随机小数
*/
function randFloat($min, $max)
{
if ($min >= $max) {
throw new \Exception('最大值必须大于最小值', 501);
}
$rand = $min + mt_rand() / mt_getrandmax() * ($max - $min);
return floatval(sprintf('%.2f', $rand));
}

posted @   霸波儿奔925  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示