PHP生成惟一订单号

在平常的网站开发中,咱们常常须要生成惟一的订单号。订单号过短,在高迸发状况下,很容易形成订单号重复事件,虽然是小几率事件。php

下面咱们使用PHP多个函数生成一个如今最经常使用的订单号格式:html

$order_number = date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);java

加了毫秒,变成25位了,重复概率更小
数组

$order_number = date('YmdHi'). substr(microtime(), 2, 5) .substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);函数

简单从内到外解析一下这个订单号生成过程:网站

  1. date("Ymd"):这个很容易理解,是在最前方拼接一个当前年月日组成的数字spa

  2. uniqid():此函数获取一个带前缀、基于当前时间微秒数的惟一ID。code

  3. substr(uniqid(), 7, 13):因为uniqid()函数生成的结果前面7位好久才会发生变化,因此有或者没有对于咱们没有多少影响,因此咱们截取后面常常发生变化的几位。htm

  4. str_split(substr(uniqid(), 7, 13), 1):咱们将刚刚生成的字符串进行分割放到数组里面,str_split()第二个参数是每一个数组元素的长度。blog

  5. array_map('ord', str_split(substr(uniqid(), 7, 13), 1))):其中array_map()函数做用为:函数返回用户自定义函数做用后的数组,意思就是ord是函数ord(),然后面第二个参数是ord()函数的参数。能够这么理解ord(str_split(substr(uniqid(), 7, 13), 1)))。而后ord()是干啥的,ord()函数php内置函数:返回字符串的首个字符的 ASCII 值,意思就是把第二个参数生成的数组每一个元素所有转换为数字,由于刚刚咱们截取的字符串中含有字母,不适合订单号。

  6. implode():很简单了,把刚刚那个转换成数字的数字在拼接成为一个数字。

  7. 因为刚刚生成的随机数可能会长短不一(缘由就是,每一个字符转换为ASCII值可能不同,有些是2位,有些多是一位),因此咱们赞成截取0-8

  8. 而后加上刚刚的日期数字,如今就凑成了一个等长的高大上的订单号了~

转载:http://blog.sina.com.cn/s/blog_68793f6a0102vw09.html

return date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);

return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);

//生成24位惟一订单号码,格式:YYYY-MMDD-HHII-SS-NNNN,NNNN-CC,其中:YYYY=年份,MM=月份,DD=日期,HH=24格式小时,II=分,SS=秒,NNNNNNNN=随机数,CC=检查码

@date_default_timezone_set("PRC");

while(true){

//订购日期

 $order_date = date('Y-m-d');

//订单号码主体(YYYYMMDDHHIISSNNNNNNNN)

 $order_id_main = date('YmdHis') . rand(10000000,99999999);

//订单号码主体长度

 $order_id_len = strlen($order_id_main);

 $order_id_sum = 0;

 for($i=0; $i<$order_id_len; $i++){

 $order_id_sum += (int)(substr($order_id_main,$i,1));

}

//惟一订单号码(YYYYMMDDHHIISSNNNNNNNNCC)

 $order_id = $order_id_main . str_pad((100 - $order_id_sum % 100) % 100,2,'0',STR_PAD_LEFT);

转载:http://www.thinksaas.cn/group/topic/352944/

相关文章
相关标签/搜索