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 相关文章推荐
一个odbc连mssql分页的类
Oct 09 PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 PHP
apache配置虚拟主机的方法详解
Jun 17 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
Nov 14 PHP
PHP开发中AJAX技术的简单应用
Dec 11 PHP
PHP中Array相关函数简介
Jul 03 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
Mar 15 PHP
thinkPHP5.0框架API优化后的友好性分析
Mar 17 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
PHP与以太坊交互详解
Aug 24 PHP
PHP封装的分页类与简单用法示例
Feb 25 PHP
php常用的工具开发整理
Sep 26 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.ini中文版(2)
2006/10/09 PHP
php重定向的三种方法分享
2012/02/22 PHP
PHP页面中文乱码分析
2013/10/29 PHP
ThinkPHP的URL重写问题
2014/06/22 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
jQuery示例收集
2010/11/05 Javascript
jquery模拟实现鼠标指针停止运动事件
2016/01/12 Javascript
微信小程序 网络API发起请求详解
2016/11/09 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
实例详解Node.js 函数
2018/06/10 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
Vue使用NProgress的操作过程解析
2019/10/10 Javascript
原生js实现无缝轮播图
2020/01/11 Javascript
2019年度web前端面试题总结(主要为Vue面试题)
2020/01/12 Javascript
Vue的全局过滤器和私有过滤器的实现
2020/04/20 Javascript
[01:05]DOTA2完美大师赛趣味视频之选手教你打职业
2017/11/23 DOTA
python中logging库的使用总结
2017/10/18 Python
Python基于OpenCV实现视频的人脸检测
2018/01/23 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
2019 Python最新面试题及答案16道题
2019/04/11 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
Centos7 下安装最新的python3.8
2019/10/28 Python
如何在mac环境中用python处理protobuf
2019/12/25 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
CSS3 3D制作实战案例分析
2016/09/18 HTML / CSS
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
网站美工岗位职责
2014/04/02 职场文书
遵纪守法演讲稿
2014/05/23 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
贪污检举信范文
2015/03/02 职场文书
求职推荐信范文
2015/03/27 职场文书
2015年化工厂工作总结
2015/05/04 职场文书
观看《筑梦中国》纪录片心得体会
2016/01/18 职场文书
Navicat for MySQL的使用教程详解
2021/05/27 MySQL