雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

PHP 常用功能函数

2024-09-08 45

1. 生成指定长度的随机英文数字字符串2. 生成24位随机订单号, 年月日时分秒(14位) + 10位随机数3. 根据时间戳出计算到现在的文字时间4. 格式化数字(将一个整数进行单位转换: 万、亿)5. 构建 TP6 模型搜索器数据6. 路径中的目录如果不存在就执行创建目录7. 给文件生成新的随机文件名

1. 生成指定长度的随机英文数字字符串


/** * 生成指定长度的随机英文数字字符串 * @param  int $length 字符串长度 * @return string        成的随机字符串 */function getRandString($length){     $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';     $randomString = '';     for ($i = 0; $i < $length; $i++) {         $randomString .= $characters[rand(0, strlen($characters) - 1)];     }     return $randomString; }

2. 生成24位随机订单号, 年月日时分秒(14位) + 10位随机数


/** * 生成24位随机订单号 * 年月日时分秒(14位) + 10位随机数 */function ordersn(){    return date('YmdHis') . substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7,  13), 1))), 0, 8) . mt_rand(10, 99);}/** * 随机生成18位数字订单号(18位:不包含前缀) * @param string $prefix 订单号前缀 * @return string 随机订单号 */function generateOrdersn(string $prefix = ''){    return $prefix . date('YmdHis') . substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7,  13), 1))), 0, 2) . mt_rand(10, 99);}

3. 根据时间戳出计算到现在的文字时间


/** * 将时间戳转为文字时间 * @param integer $time */function wordTime(int $time){    $str = '';    $time = intval(substr($time, 0, 10));    $int = time() - $time;    if ($int < 5){        $str = sprintf('刚刚', $int);    } elseif ($int < 60){        $str = sprintf('%d秒前', $int);    } elseif ($int < 3600) {        $str = sprintf('%d分钟前', floor($int / 60));    } elseif ($int < 86400){        $str = sprintf('%d小时前', floor($int / 3600));    } elseif ($int < 2592000) {        $str = sprintf('%d天前', floor($int / 86400));    } else {        $str = date('Y-m-d H:i:s', $time);    }    return $str;}

4. 格式化数字(将一个整数进行单位转换: 万、亿)


/** * 整数格式化, 单位转换 * @param integer $num */function formatNumber(int $num){    $num    = intval($num);    $length = strlen($num);    if ( $length > 8 ) {        $decimal = rtrim(substr($num, -8, 2), '0');        $decimal = $decimal ? '.' . $decimal : '';        // 亿        return substr($num, 0, strrpos($num, substr($num, -7)) - 1) . $decimal . '亿';    } elseif ( $length > 4 ) {        $decimal = rtrim(substr($num, -4, 2), '0');        $decimal = $decimal ? '.' . $decimal : '';        // 万        return substr($num, 0, strrpos($num, substr($num, -3)) - 1) . $decimal . 'W';    } else {        // 千        return $num;    }}

5. 构建 TP6 模型搜索器数据


使用示例

$where = ['id' => 1, 'name' => '张三'];//查询条件$where = where_filter($where, $fields);//构建搜索器参数$data = User::withSearch($fields, $where)->select();

自定义函数, 用于TP6搜索器

/** * 去掉数组空字符串,返回所有键 * * @param array $where * @param array $keys * @return array */function where_filter(array $where, &$keys){    // 去掉数组里的空值 (会正常返回:false、0)    $where = array_filter($where, function ($k) {        return ($k === '' || $k === null) ? false : true;    });更新于:2个月前
赞一波!

文章评论

评论问答