例子,php生成唯一订单号的代码。
用uniqid获取一个基于当前的微秒数生成的唯一不重复的字符串(但是他的前7位貌似很久才会发生变动,所以不用考虑可删除),取其第8到13位。但是这个字符串里面有英文字母,咋办?
用ord获取他的ascii码,所以就有了下一步:用str_split把这个字符串分割为数组,用array_map去操作(速度快点)。
然后返回的还是一个数组,ko,在用implode弄成字符串,但是字符长度不定,取前固定的几位,然后前面加上当前的年份和日期,这个方法生成的订单号,全世界不会有多少重复的。
当然,除非你把服务器时间往前调,但是调也不用怕,哥不相信他会在同一微秒内下两次订单,网络数据传输也要点时间的,即便你是在本地。
相关链接:
php 生成订单号二种方法
php生成不重复的随机订单号
php 自动生成订单编号二种方法
php订单号的生成代码
前阵子,公司有个电子商务项目,需要生成订单号。
当时的考虑很简单,取系统时间加上随机数,或者使用 uniqid() 方法。我们都知道,订单号最基本的要求就是唯一,这个条件必须满足。仔细考虑下上述方法,在顾客购买量少的情况下,订单重复的可能性为零,但是在购买高蜂期生成的订单号重复是很有可能发生的。所以上述方法不可靠,有待强化。
在网上找到一个不错的方法,该方法用上了英文字母、年月日、unix 时间戳和微秒数、随机数,重复的可能性大大降低,还是很不错的。
使用字母很有代表性,一个字母对应一个年份,总共16位,不多也不少,呵呵。
生成效果:
a422694333616096