博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生成随机唯一号码, 比如订单号
阅读量:6972 次
发布时间:2019-06-27

本文共 517 字,大约阅读时间需要 1 分钟。

function build_order_no(){        return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);    }    echo build_order_no();

  

输出结果

2014062356100485

2014062349535399

用uniqid获取一个基于当前的微秒数生成的唯一不重复的字符串(但是他的前7位貌似很久才会发生变动,所以不用考虑可删除),取其第8到13位。但是这个字符串里面有英文字母,咋办?

用ord获取他的ASCII码,所以就有了下一步:用str_split把这个字符串分割为数组,用array_map去操作(速度快点)。
然后返回的还是一个数组,KO,在用implode弄成字符串,但是字符长度不定,取前固定的几位,然后前面加上当前的年份和日期,这个方法生成的订单号,全世界不会有多少重复的。
当然,除非你把服务器时间往前调,但是调也不用怕,哥不相信他会在同一微秒内下两次订单,网络数据传输也要点时间的,即便你是在本地。

转载地址:http://kbbsl.baihongyu.com/

你可能感兴趣的文章
<转>技术团队新官上任之基层篇
查看>>
[LeetCode]题解(python):045-Jump Game II
查看>>
[LeetCode]题解(python):099-Recover Binary Search Tree
查看>>
【Unity Shaders】Reflecting Your World —— Unity3D中的遮罩反射(Masking Reflections)
查看>>
Lambda为什么又称为匿名函数
查看>>
搜索阅读二合一 win8移动端开发计划与组员分工
查看>>
[转]说说.NET中被我忽视的方法
查看>>
dfs - 走过的标记取消
查看>>
node path.resolve()
查看>>
关于 多个git用户或多个git管理工具切换时出现的问题总结
查看>>
Sqli-labs less 15
查看>>
Mutation Testing(变异测试)
查看>>
HADOOP实践101:在Hadoop集群中添加机器和删除机器
查看>>
LOJ 10160 - 「一本通 5.2 练习 3」周年纪念晚会 / 没有上司的晚会
查看>>
File Zilla连接Ubuntu 失败
查看>>
Javassist 使用,动态生成类,动态代理
查看>>
tomcat 内存溢出
查看>>
第一次 作业 workcount (基础功能实现)
查看>>
【1】今天开始学习python
查看>>
实用字符串函数
查看>>