PHP生成唯一订单号
在日常的网站开发中,我们经常需要生成唯一的订单号。订单号太短,在高迸发情况下,很容易造成订单号重复事件,虽然是小概率事件。 下面我们使用PHP多个函数生成一个现在最常用的订单号格式: $order_number = date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8); 加了毫秒,变成25位了,重复几率更小 $order_number = date('YmdHi'). substr(microtime(), 2, 5) .substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8); 简单从内到外解析一下这个订单号生成过程: date("Ymd"):这个很容易理解,是在最前方拼接一个当前年月日组成的数字 uniqid():此函数获取一个带前缀、基于当前时间微秒数的唯一ID。 substr(uniqid(), 7, 13):由于uniqid()函数生成的结果前面7位很久才会发生变化,所以有或者没有对于我们没有多少影响,所以我们截取后面经常发生变化的几位。 str_split(substr(uniqid(), 7, 13), 1)