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 相关文章推荐
vBulletin Forum 2.3.xx SQL Injection
Oct 09 PHP
PHP 常用函数库和一些实用小技巧
Jan 01 PHP
Session保存到数据库的php类分享
Oct 24 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
Oct 29 PHP
php错误、异常处理机制(补充)
May 07 PHP
使用php记录用户通过搜索引擎进网站的关键词
Feb 13 PHP
使用ob系列函数实现PHP网站页面静态化
Aug 13 PHP
PHP读取、解析eml文件及生成网页的方法示例
Sep 04 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
Feb 15 PHP
laravel使用Faker数据填充的实现方法
Apr 12 PHP
Laravel 修改默认日志文件名称和位置的例子
Oct 17 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 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中HTML标签过滤技巧
2014/01/07 PHP
Laravel框架表单验证详解
2014/09/04 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
php中让人头疼的浮点数运算分析
2016/10/10 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
DOM 事件流详解
2015/01/20 Javascript
自定义百度分享的分享按钮
2015/03/18 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
2017/01/04 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
nodejs连接mysql数据库简单封装示例-mysql模块
2017/04/10 NodeJs
JS判断非空至少输入两个字符的简单实现方法
2017/06/23 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
JavaScript基础心法 数据类型
2018/03/05 Javascript
bootstrap datepicker的基本使用教程
2019/07/09 Javascript
微信小程序 如何保持登录状态
2019/08/16 Javascript
解决vue-router 嵌套路由没反应的问题
2020/09/22 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
python中的__slots__使用示例
2015/02/26 Python
Python中用memcached来减少数据库查询次数的教程
2015/04/07 Python
Python中IPYTHON入门实例
2015/05/11 Python
python判断图片宽度和高度后删除图片的方法
2015/05/22 Python
Python实现Linux中的du命令
2017/06/12 Python
python网络爬虫学习笔记(1)
2018/04/09 Python
Python实现FTP弱口令扫描器的方法示例
2019/01/31 Python
Django认证系统实现的web页面实现代码
2019/08/12 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
Django xadmin开启搜索功能的实现
2019/11/15 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
allbeauty美国:英国在线美容店
2019/03/11 全球购物
安德玛加拿大官网:Under Armour加拿大
2019/10/02 全球购物
蛋糕店的商业计划书范文
2014/01/27 职场文书
门卫岗位职责
2015/02/09 职场文书
初中思想品德教学反思
2016/02/24 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书