首页 > 开发 > PHP > 正文

PHP生成唯一订单号的方法汇总

2024-05-04 23:34:28
字体:
来源:转载
供稿:网友
前阵子有个电子商务项目,需要生成订单号。当时的考虑很简单,取系统时间加上随机数,或者使用 uniqid() 方法。仔细考虑下上述方法,在顾客购买量少的情况下,订单重复的可能性为零,但是在购买高蜂期生成的订单号重复是很有可能发生的。
 

第一种

 

复制代码代码如下:

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);

 

第三种

 

  1. //生成24位唯一订单号码,格式:YYYY-MMDD-HHII-SS-NNNN,NNNN-CC,其中:YYYY=年份,MM=月份,DD=日期,HH=24格式小时,II=分,SS=秒,NNNNNNNN=随机数,CC=检查码 
  2.  
  3.  @date_default_timezone_set("PRC"); 
  4.  
  5.  while(true){ 
  6.  
  7.   //订购日期 
  8.  
  9.   $order_date = date('Y-m-d'); 
  10.  
  11.   //订单号码主体(YYYYMMDDHHIISSNNNNNNNN) 
  12.  
  13.   $order_id_main = date('YmdHis') . rand(10000000,99999999); 
  14.  
  15.   //订单号码主体长度 
  16.  
  17.   $order_id_len = strlen($order_id_main); 
  18.  
  19.   $order_id_sum = 0; 
  20.  
  21.   for($i=0; $i<$order_id_len$i++){ 
  22.  
  23.   $order_id_sum += (int)(substr($order_id_main,$i,1)); 
  24.  
  25.   } 
  26.  
  27.   //唯一订单号码(YYYYMMDDHHIISSNNNNNNNNCC) 
  28.  
  29.   $order_id = $order_id_main . str_pad((100 - $order_id_sum % 100) % 100,2,'0',STR_PAD_LEFT); 
?
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表