php substr 去掉前n位_PHP 生成唯一订单号函数

PHP 生成唯一订单号函数

一、应用场景

       有电子商城项目,需要生成订单号。当时的考虑很简单,取系统时间加上随机数,或者使用 uniqid() 方法。仔细考虑下上述方法,在顾客购买量少的情况下,订单重复的可能性为零,但是在购买高锋期生成的订单号重复是很有可能发生的。

二、自定义生成订单号中使用的PHP内置的函数说明如下

函数说明:

       openssl_random_pseudo_bytes函数本身是用来生成指定个数的随机字节

       ceil  函数进一法取整

       bin2hex  函数把包含数据的二进制字符串转换为十六进制值

       substr函数截取字符串

       rand   函数随机生成1至99999随机数

       str_pad函数指定长度填充字符串

三、实现生成25位唯一订单号

1、定义StrOrderOne函数

b1e2ce5a44e221b92d09f9955f40aeb9.png

2、定义一个$date变量储存当前时间,如:180420格式

e27ccadffa0d589a67788beb19305d86.png

结果如下:

1bfb7f1569bcc16941cf2e793dc21e4d.png

3、生成一个随机数,并转成十六进制值

5d0375badc2d6a4ac30031f86b986062.png

结果如下:

0d4c0414287411d635ec7e858e88165b.png

4、让订单右边填充上00001至99999的随机数

0620dad2f67ae908a8f562ca6f34834f.png

结果如下:

24f88a8417375dbc1f0a309f198fc25d.png

5、接下来我们使用for循环同时生成1万个订单

69e088f5982902eed14f851acb53b0e4.png

结果如下:

21eeae8252399061665516f924e72f01.png

通过上图所示可以看到数组的个为10000,与我们for遍历中指定最大数一致,代表生成的订单号是没有重复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值