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 相关文章推荐
Ajax PHP分页演示
Jan 02 PHP
PHP学习资料汇总与网址
Mar 16 PHP
PHP 变量的定义方法
Jan 26 PHP
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
Jun 03 PHP
关于使用coreseek并为其做分页的介绍
Jun 21 PHP
php实现用于删除整个目录的递归函数
Mar 16 PHP
php结合正则批量抓取网页中邮箱地址
May 19 PHP
PHP多态代码实例
Jun 26 PHP
Laravel5.5新特性之友好报错以及展示详解
Aug 13 PHP
php利用ob_start()清除输出和选择性输出的方法
Jan 18 PHP
laravel 时间格式转时间戳的例子
Oct 11 PHP
PHP autoload使用方法及步骤详解
Sep 05 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/12/30 PHP
php 操作符与控制结构
2012/03/07 PHP
教你如何使用php session
2013/10/28 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
2016/12/19 PHP
laravel 字段格式化 modle 字段类型转换方法
2019/09/30 PHP
javascript jq 弹出层实例
2013/08/25 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
JavaScript中this详解
2015/09/01 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
Vue CLI3搭建的项目中路径相关问题的解决
2018/09/17 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
node crawler如何添加promise支持
2020/02/01 Javascript
微信小程序吸底区域适配iPhoneX的实现
2020/04/09 Javascript
跟老齐学Python之用while来循环
2014/10/02 Python
Python AES加密模块用法分析
2017/05/22 Python
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
python 表达式和语句及for、while循环练习实例
2017/07/07 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
python+opencv实现摄像头调用的方法
2019/06/22 Python
python中with用法讲解
2020/02/07 Python
经理秘书岗位职责
2013/11/14 职场文书
技术学校毕业生求职信分享
2013/12/02 职场文书
四好少年事迹材料
2014/01/12 职场文书
个人投资计划书
2014/05/01 职场文书
社区服务活动小结
2014/07/08 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
2015暑假假期总结
2015/07/13 职场文书
心理学培训心得体会
2016/01/22 职场文书