作为一个开发人员,生成订单时常常需要获取一段随机码来表示订单号,并且订单号一般包含的特定的时间日期等信息,临时现写一个比较浪费时间,这里有一个封装好的生成随机订单号的函数,需要时直接调用即可。
代码如下:
/**
* 获取订单随机号
* @param int $num 需要多长的订单号,传一个长度
*/
public function get_order($length)
{
$n = $length - 10;
//1、年月日
$date = date('Ymd');
//2、基于微秒生成随机串
$id = uniqid();
//3、截取随机串的随机后7位
$sub = substr($id, 7, 13);
//4、将随机串分割成数组
$str_arr = str_split($sub, 1);
//5、转换成ASCLL值,并取第一位连接成字符串
$ascll_arr = array_map('ord', $str_arr);
$ascll_str = implode('', $ascll_arr);
//6、随机取连续的4位
$max_start_index = strlen($ascll_str) - 1 - 4;
$start_index = rand(0, $max_start_index);
$str = substr($ascll_str, $start_index, 4);
//7、生成末尾的n位随机数
$rand = mt_rand('1' . str_repeat('0', $n - 1), str_repeat('9', $n));
$order = $date . $str . $rand;
return $order;
}
由于我是基于fastadmin框架api写接口时使用的这个函数,在调用时只需要
$this->get_order(15)