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; }); // 拿到所有键 $keys = array_keys($where); // 返回数组 return $where; }
6. 路径中的目录如果不存在就执行创建目录
/** * 路径中的目录不存在就创建目录 */ function createDir($path) { if (!file_exists(dirname($path))) mkdir(dirname($path), 0777, true); }
7. 给文件生成新的随机文件名
/** * 给文件生成新的随机文件名 */ function getRandName($file) { return md5(microtime(true) . mt_rand(1, 1e9)) . '.' . pathinfo($file, PATHINFO_EXTENSION); }