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


Posted in PHP onApril 16, 2015

第一种

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

第四种:

在网上找了一番,发现这位同学的想法挺不错的,redtamo,具体的请稳步过去看看,我作简要概述,该方法用上了英文字母、年月日、Unix 时间戳和微秒数、随机数,重复的可能性大大降低,还是很不错的。使用字母很有代表性,一个字母对应一个年份,总共16位,不多也不少,呵呵。

<?php 
$yCode = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J');
$orderSn = $yCode[intval(date('Y')) - 2011] . strtoupper(dechex(date('m'))) . date('d') . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 99));
?>

生成效果:

A422694333616096

唉,不过很可惜,最后项目并没有使用这种方法,说是没必要搞这么复杂, - -!

以上四种方法就是本文给大家分享的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
php面向对象全攻略 (五) 封装性
Sep 30 PHP
php cache类代码(php数据缓存类)
Apr 15 PHP
php函数array_merge用法一例(合并同类数组)
Feb 03 PHP
PHPMailer的主要功能特点和简单使用说明
Feb 17 PHP
PHP中的命名空间相关概念浅析
Jan 22 PHP
php快速查找数据库中恶意代码的方法
Apr 01 PHP
thinkphp微信开发(消息加密解密)
Dec 02 PHP
深入解析PHP的Yii框架中的缓存功能
Mar 29 PHP
PHP+Ajax异步带进度条上传文件实例
Nov 01 PHP
PHP多维数组排序array详解
Nov 21 PHP
数据结构之利用PHP实现二分搜索树
Oct 25 PHP
php引用传递
Apr 01 PHP
微信access_token的获取开发示例
Apr 16 #PHP
微信自定义菜单的处理开发示例
Apr 16 #PHP
php简单操作mysql数据库的类
Apr 16 #PHP
PHP扩展程序实现守护进程
Apr 16 #PHP
php简单实现查询数据库返回json数据
Apr 16 #PHP
PHP中SESSION的注销与清除
Apr 16 #PHP
PHP中trim()函数简单使用指南
Apr 16 #PHP
You might like
PHP怎样调用MSSQL的存储过程
2006/10/09 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
PHP合并discuz用户脚本的方法
2015/08/04 PHP
详解PHP发送邮件知识点
2018/05/06 PHP
Laravel ORM 数据model操作教程
2019/10/21 PHP
HTML DOM的nodeType值介绍
2011/03/31 Javascript
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
学习从实践开始之jQuery插件开发 菜单插件开发
2012/05/03 Javascript
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
jQuery :first选择器使用介绍
2013/08/09 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
标题过长使用javascript按字节截取字符串
2014/04/24 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
使用Python抓取模板之家的CSS模板
2015/03/16 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
2016/03/14 Python
Python中__init__.py文件的作用详解
2016/09/18 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
python 画条形图(柱状图)实例
2020/04/24 Python
python基本算法之实现归并排序(Merge sort)
2020/09/01 Python
财务副总经理工作职责
2013/11/25 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
学生安全承诺书
2014/05/22 职场文书
销售团队激励口号
2014/06/06 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
Python多线程 Queue 模块常见用法
2021/07/04 Python
bose降噪耳机音能消除人声吗
2022/04/19 数码科技