Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >php生成唯一订单号的5种方法

php生成唯一订单号的5种方法

作者头像
紫旭Blog - blog.zixutech.cn
发布于 2020-01-01 08:37:12
发布于 2020-01-01 08:37:12
3K01
代码可运行
举报
文章被收录于专栏:紫旭紫旭
运行总次数:1
代码可运行

这篇文章主要介绍了关于php生成唯一订单号的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

第一种

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private function doCreateOrderNumber($time){

          $i=1;

          $dd = date('Ymd',$time);

          $aa = 'OH'.$dd;

          $res = $this->orderModel->query("select sn from sr_order_list where sn like '$aa%' order by id limit 1");

          if(!isset($res[0]['sn'])){

                $i = 1;

          }else{

                $i = (int)substr($res[0]['sn'],9,10) + 1;

          }

          while(true){

                $nsn = 'OH'.$dd.$i;

                $exist = $this->orderModel->query("select id from sr_order_list where sn = '$nsn' ");

                if($exist){

                      $i++;

                }else{

                      return $nsn;

                }

          }

    }

第二种

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$osn = date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);

echo $osn; //2018070462577

第三种

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$osn = date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);

echo $osn; //2018070499495653

第四种

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$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));

  }

  $osn = $order_id_main . str_pad((100 - $order_id_sum % 100) % 100,2,'0',STR_PAD_LEFT);

echo $osn; //201807041332258742313727

第五种

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$code = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J');

$osn = $code[intval(date('Y')) - 2011] . strtoupper(dechex(date('m'))) . date('d') . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 99));

echo $osn; //H704764673624352
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-10-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
pHP生成唯一单号
这几天一直在写个人使用的用户中心,虽然期间遇到不少的问题,但还是一点点的都解决了,也从制作期间学到不少的知识,今天就说一说利用PHP生成订单单的方法。
全栈程序员站长
2022/07/08
1.8K0
pHP生成唯一单号
php redis实现秒杀抢购
对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使用Redis。
黄啊码
2020/05/29
2.5K0
php一步一步实现mysql协议(二) ——握手初始化
上面就是mysql客户端和服务端的交互流程,然后结合实际中的抓包工具来看先这个过程。这里使用php的PDO扩展连接数据库并执行一条查询语句,抓包情况如下
码缘
2020/09/16
8680
php一步一步实现mysql协议(二) ——握手初始化
项目笔记之订单号生成规则以及方法,第一篇!
小伙伴们在日常的商城项目开发中,都会遇到订单号生成的问题,今天呢小编就带领大家去解读一下生成订单号的问题!    首先,订单号我们要明确它有有3个性质:1.唯一性  2.不可推测性3.效率性,唯一性和不可推测性不用说了,效率性是指不能频繁的去数据库查询以避免重复。况且满足这些条件的同时订单号还要足够的短。不知道小伙伴们在日常的项目中是否也和我一样去思考过生成订单的一些小问题,可能你也会说,这些东西不用想的那么复杂,其实呢,小编也是同意大家的看法,但是殊不知我们做程序的都讲究严谨性,而且在订单模块的开发中,订单号的位置相信大家都知道,所以呢,我们在写这些小程序的时候,不妨花上几分钟去思考一下为什么这样去定义!好了,下面就告诉大家生成订单的办法了!    首先,我们生成订单的方式呢:可以采用时间戳加随机数的方式比如:time().rand(10000,99999);这样呢就生成了一个15位的随机数,时间戳呢精确到了毫秒,而后五位随机数,也去除了高并发状况下,订单号重复的情况,当然了我们也可以把时间戳简单的处理一下变成了:date("YmdHis").rand(10000,99999);这样的方式,相信小伙伴们也注意到了我们一直在使用一个rand的PHP的随机数函数,所以呢,当我们去学习PHP的基础的时候,我们遇到随机数的函数的时候,是不是还在想,这个函数到底是有什么用途的呢?现在小伙伴们是不是应该明白了呢!当然了我们还可以将其封装成一个方法,以备我们相似项目中使用,也提高了我们日常代码的可复用性,使我们的代码的效率也提高了不少,那要怎么封装呢,小编给大家写一个简单的小示例:function
思梦php
2018/02/08
1.3K0
PHP生成不重复的订单号
使用date()函数,获取当前日期的数字,再配合rand()函数,生成几位随机数。便是一个简单的12位订单号了
宣言言言
2019/12/15
2.9K0
php 生成订单号201807205598981
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112386.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/08
7850
php 生成唯一订单「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/111600.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/19
6970
PHP下载远程文件到服务器
//$path=ROOT_PATH.”public/uploads/app/”.date(‘Ymd’,time());
超级小可爱
2023/02/20
3.4K0
PHP 常用功能函数
1. 生成指定长度的随机英文数字字符串 2. 生成24位随机订单号, 年月日时分秒(14位) + 10位随机数 3. 根据时间戳出计算到现在的文字时间 4. 格式化数字(将一个整数进行单位转换: 万、亿) 5. 构建 TP6 模型搜索器数据 6. 路径中的目录如果不存在就执行创建目录 7. 给文件生成新的随机文件名 1. 生成指定长度的随机英文数字字符串 ---- /** * 生成指定长度的随机英文数字字符串 * @param int $length 字符串长度 * @return string 成的随机
很酷的站长
2023/01/16
7790
php结合redis实现高并发下的抢购、秒杀功能的实例
下面小编就为大家带来一篇php结合redis实现高并发下的抢购、秒杀功能的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
OwenZhang
2021/12/08
1.4K0
php结合redis实现秒杀功能
第一种,简单实现 <?php $conn=mysql_connect("localhost","test","123456"); if(!$conn){ echo "connect faile
用户1349575
2022/01/24
9570
推荐11-PHP用redis解决超卖的问题
在商品秒杀活动中,比如商品库存只有100,但是在抢购活动中可能有200人同时抢购,这样就出现了并发,在100件商品下单完成库存为0了还有可能继续下单成功,就出现了超卖。
猿哥
2019/09/19
9630
推荐11-PHP用redis解决超卖的问题
发送TRC20-Token交易
简介波场网络跟以太坊很像,特别是接口设计,token的发送目标首先是合约地址而不是接收token的钱包地址,其次参数里加上接收者钱包地址和数量。
零云
2023/07/24
8331
如何正确设计一个订单号???
该文章针对订单号的设计进行初探,会在不断的实践中完善、后期也会不断更新。希望大家关注。
兔云小新LM
2021/02/25
10.4K0
如何正确设计一个订单号???
[更新]如何正确设计一个订单号???
我们经常提及到的订单号,大多数是在电商购物场景下的一个唯一标识字符串。实则订单号并不仅仅指的是电商系统,只要需要这样的业务场景,我们都可以使用订单号的模式来处理。例如我们的省份证号,要求唯一可读性强等特点,也可以将之理解为一个订单号。
兔云小新LM
2021/02/16
2K0
[更新]如何正确设计一个订单号???
可以调整gif动画图片尺寸的很实用的php类建议收藏
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/120780.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/15
4600
PHP解决高并发问题
举个例子,高速路口,1秒钟来5部车,每秒通过5部车,高速路口运作正常。突然,这个路口1秒钟只能通过4部车,车流量仍然依旧,结果必定出现大塞车。(5条车道忽然变成4条车道的感觉)
全栈程序员站长
2022/09/04
1.3K0
PHP解决高并发问题
干货 | 突破disable_functions限制执行命令·下
UAF漏洞(Use-After-Free)是一种内存破坏漏洞,漏洞成因是一块堆内存被释放了之后又被使用。又被使用指的是:指针存在(悬垂指针被引用)。这个引用的结果是不可预测的,因为不知道会发生什么。由于大多数的堆内存其实都是C++对象,所以利用的核心思路就是分配堆去占坑,占的坑中有自己构造的虚表。
HACK学习
2022/02/17
3.5K0
干货 | 突破disable_functions限制执行命令·下
PHP与EXCEL PHPExcel
PHPExcel 它是用来操作Office Excel 文档PHP图书馆,它是基于微软的OpenXML标准PHP语言。能够使用它来读、写不同格电子表的类型格,例如 Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsx, CSV, Libre/OpenOffice Calc .ods, Gnumeric, PDF, HTML等等。
全栈程序员站长
2022/07/06
1.6K0
秒杀安全
简介 我们通常衡量一个Web系统的吞吐率的指标是QPS(Query Per Second,每秒处理请求数),解决每秒数万次的高并发场景,这个指标非常关键。举个例子,我们假设处理一个业务请求平均响应时间为100ms,同时,系统内有20台Web服务器,配置MaxClients为500个(表示服务器的最大连接数目)。 那么,我们的Web系统的理论峰值QPS为(理想化的计算方式): 20*500/0.1 = 100000 (10万QPS) 在高并发的实际场景下,机器都处于高负载的状态,在这个时候平均响应时间
架构师小秘圈
2018/04/02
3.2K0
秒杀安全
相关推荐
pHP生成唯一单号
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验