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水印技术
Feb 14 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
Jan 12 PHP
如何取得中文字符串中出现次数最多的子串
Aug 08 PHP
PHP实现通过get方式识别用户发送邮件的方法
Jul 16 PHP
详解PHP序列化反序列化的方法
Oct 27 PHP
PHP简单处理表单输入的特殊字符的方法
Feb 03 PHP
php英文单词统计器
Jun 23 PHP
php in_array() 检查数组中是否存在某个值详解
Nov 23 PHP
PHP实现通过CURL上传文件功能示例
May 30 PHP
Yii1.1框架实现PHP极光推送消息通知功能
Sep 06 PHP
PHP PDOStatement::bindParam讲解
Jan 30 PHP
php中对象引用和复制实例分析
Aug 14 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
DC这些乐高系列动画电影你看过几部?
2020/04/09 欧美动漫
PHP临时文件的安全性分析
2014/07/04 PHP
PHP date函数常用时间处理方法
2015/05/11 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
jQuery验证表单格式的使用方法
2017/01/10 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
2019/05/21 Javascript
浅谈Vue的响应式原理
2019/05/30 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
2019/07/29 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
Python学习笔记之os模块使用总结
2014/11/03 Python
Python3通过Luhn算法快速验证信用卡卡号的方法
2015/05/14 Python
浅谈Python 的枚举 Enum
2017/06/12 Python
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
Python面向对象实现方法总结
2020/08/12 Python
普通大学毕业生自荐信
2013/11/04 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
2015年复活节活动总结
2015/02/27 职场文书
歼十出击观后感
2015/06/11 职场文书
网络舆情信息简报
2015/07/21 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis
浅谈MySQL中的六种日志
2022/03/23 MySQL