作为一个开发人员,生成订单时常常需要获取一段随机码来表示订单号,并且订单号一般包含的特定的时间日期等信息,临时现写一个比较浪费时间,这里有一个封装好的生成随机订单号的函数,需要时直接调用即可。
代码如下:
/** * 获取订单随机号 * @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)