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 相关文章推荐
基于mysql的论坛(3)
Oct 09 PHP
几种有用的变型 PHP中循环语句的用法介绍
Jan 30 PHP
解析百度搜索结果link?url=参数分析 (全)
Oct 09 PHP
php连接mssql的一些相关经验及注意事项
Feb 05 PHP
PHP三元运算的2种写法代码实例
May 12 PHP
thinkphp获取栏目和文章当前位置的方法
Oct 29 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
Mar 19 PHP
php中二分法查找算法实例分析
Sep 22 PHP
php使用自定义函数实现汉字分割替换功能示例
Jan 30 PHP
Docker搭建自己的PHP开发环境
Feb 24 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
KindEditor在php环境下上传图片功能集成的方法示例
Jul 20 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各种编码集详解和以及在什么情况下进行使用
2011/09/11 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
浅谈JavaScript中面向对象技术的模拟
2006/09/25 Javascript
xmlHTTP实例
2006/10/24 Javascript
Dom在ajax技术中的作用说明
2010/10/25 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
20行代码实现的一个CSS覆盖率测试脚本
2013/07/07 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
Python实现的最近最少使用算法
2015/07/10 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
2017/01/20 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
Python实现Linux监控的方法
2019/05/16 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
python urllib和urllib3知识点总结
2021/02/08 Python
python实现学生通讯录管理系统
2021/02/25 Python
玩具公司的创业计划书
2013/12/31 职场文书
企业员工薪酬方案
2014/06/04 职场文书
暑假社会实践证明格式
2014/10/28 职场文书
社区六一儿童节活动总结
2015/02/11 职场文书
大学生个人学习总结
2015/02/15 职场文书
优秀班主任工作总结2015
2015/05/25 职场文书
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis