PHP 常用功能函数

2023-01-16 09:06:53 浏览数 (1)

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

代码语言:javascript复制
/**
* 生成指定长度的随机英文数字字符串
* @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位随机数

代码语言:javascript复制
/**
* 生成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. 根据时间戳出计算到现在的文字时间

代码语言:javascript复制
/**
* 将时间戳转为文字时间
* @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. 格式化数字(将一个整数进行单位转换: 万、亿)

代码语言:javascript复制
/**
* 整数格式化, 单位转换
* @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 模型搜索器数据

使用示例

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

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

代码语言:javascript复制
/**
 * 去掉数组空字符串,返回所有键
 *
 * @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;
    });

0 人点赞