文档章节

php 唯一订单号的生成代码

编译中ing
 编译中ing
发布于 2017/08/24 15:36
字数 448
阅读 83
收藏 0

使用PHP多个函数生成一个订单号格式如下:

$num=Date('ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);

  1. date("Ymd"):拼接一个年月日组成的数字。

    2.uniqid():此函数获取一个带前缀、基于当前时间微秒数的唯一ID。

  2. substr(uniqid(), 7, 13):由于uniqid()函数生成的结果前面7位很久才会发生变化,所以有或者没有对于我们没有多少影响,所以我们截取后面经常发生变化的几位。

  3. str_split(substr(uniqid(), 7, 13),1):我们将刚刚生成的字符串进行分割放到数组里面,str_split()第二个参数是每个数组元素的长度。

  4. array_map('ord', str_split(substr(uniqid(), 7, 13),1))):其中array_map()函数作用为:函数返回用户自定义函数作用后的数组,意思就是ord是函数ord(),而后面第二个参数是ord()函数的参数。可以这么理解ord(str_split(substr(uniqid(),7, 13), 1)))。然后ord()是干啥的,ord()函数php内置函数:返回字符串的首个字符的 ASCII值,意思就是把第二个参数生成的数组每个元素全部转换为数字,因为刚刚我们截取的字符串中含有字母,不适合订单号。

  5. implode():很简单了,把刚刚那个转换成数字的数字在拼接成为一个数字。

  6. 由于刚刚生成的随机数可能会长短不一(原因就是,每个字符转换为ASCII值可能不一样,有些是2位,有些可能是一位),所以我们同意截取0-8

  7. 然后加上刚刚的日期数字,现在就凑成了一个等长的高大上的订单号了~

© 著作权归作者所有

编译中ing
粉丝 1
博文 80
码字总数 50313
作品 0
西安
程序员
私信 提问
PHP生成唯一订单号

在日常的网站开发中,我们经常需要生成唯一的订单号。订单号太短,在高迸发情况下,很容易造成订单号重复事件,虽然是小概率事件。 下面我们使用PHP多个函数生成一个现在最常用的订单号格式:...

豆花饭烧土豆
2016/03/15
172
0
微信支付-微信红包Java版本

扫描可以关注查看其它接口的demo效果 https://zb.oschina.net/market/opus/1325c0ab3ac1f4b6 代码链接,可根据需求出方案与代码。 需要有认证的公众号,且开通了微信支付,商户平台且开通了现...

小帅帅丶
2016/08/22
6.7K
16
java web系统在高并发和分布式下如何实现订单号生成唯一

方案一:如果没有并发,订单号只在一个线程内产生,那么由于程序是顺序执行的,不同订单的生成时间戳正常不同,因此用时间戳+随机数(或自增数)就可以区分各个订单。如果存在并发,且订单号...

刘诗书
2017/11/22
0
0
如何理解和处理并发下的这些问题,你知道吗?

简介:这几天看并发,看的越来越糊涂,并发中最容易出问题的就是锁。 语言:JAVA 问题描述: 一、 在java 里,程序并发时,加锁,在文档,博客,书籍中,凡是说到并发,都会说一个东西,锁。j...

god_share
2015/03/13
734
3
PHP的microtime()的毫秒值会不会有相同的值,能不能拿来做uuid

是这样,想做个时间格式的订单号生成函数,如这样格式:150406223430726653。前面10用时间,后面8位刚好用microtime()生成的毫秒值,请问,microtime()并发的情况下会不会生成相同的值。就是...

键盘浪人
2015/04/07
1K
12

没有更多内容

加载失败,请刷新页面

加载更多

数组算法

/*数组的相关的算法操作:1、在数组中找最大值/最小值*/class Test11_FindMax{public static void main(String[] args){int[] array = {4,2,6,8,1};//在数组中找最大...

architect刘源源
34分钟前
1
0
okhttp3 以上版本在安卓9.0无法请求数据的解决方案

应用官方的说明:在 Android 6.0 中,我们取消了对 Apache HTTP 客户端的支持。 从 Android 9 开始,默认情况下该内容库已从 bootclasspath 中移除且不可用于应用。且Android P 限制了明文流量...

chenhongjiang
今天
11
0
简单示例:NodeJs连接mysql数据库

开篇引用网上的说法: 简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于...

李朝强
今天
8
0
大数据学习路线

年薪30W大数据学习路线图: 一、Hadoop入门,了解什么是Hadoop 1、Hadoop产生背景 2、Hadoop在大数据、云计算中的位置和关系 3、国内外Hadoop应用案例介绍 4、国内Hadoop的就业情况分析及课程...

陈小君
今天
3
0
解读 Kylin 3.0.0 | 更敏捷、更高效的 OLAP 引擎

在近期的 Apache Kylin Meetup 成都站上,我们邀请到 Kyligence 架构师 & Apache Kylin Committer 倪春恩对 Kylin 3.0.0 版本的一些重要功能及改进从使用到原理进行了介绍: Apache Kylin 在...

ApacheKylin
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部