1. 云栖社区>
  2. PHP教程>
  3. 正文

php怎么生成不重复的卡号

作者:用户 来源:互联网 时间:2017-12-01 10:41:47

重复php生成卡号

php怎么生成不重复的卡号 - 摘要: 本文讲的是php怎么生成不重复的卡号,php如何生成不重复的卡号就像电话卡似的,全是数字,不能带字母。最开始想到是:N位随机数+数据库一个表的自增id+N位随机数不想用数据库,想到一个唯一的标准是时间。用时间戳跟上几位随机数。假如这样生成16的卡号:时间戳10位+6位随机数 1

php如何生成不重复的卡号就像电话卡似的,全是数字,不能带字母。最开始想到是:N位随机数+数据库一个表的自增id+N位随机数不想用数据库,想到一个唯一的标准是时间。用时间戳跟上几位随机数。假如这样生成16的卡号:时间戳10位+6位随机数 1316651745695261 有时需要一个循环生成多个卡号,一个循环里前面的时间戳(基本是一样,除非循环里还有其它费时操作),后面的6位随机数无法保证唯一。想到结合microtime循环调用microtime十次:0.80717200 13166756640.80720600 13166756640.80721300 13166756640.80721900 13166756640.80722400 13166756640.80723000 13166756640.80723600 13166756640.80724100 13166756640.80724600 13166756640.80725200 1316675664我想着是跟上位置在807172这里的数字便于区分开。代码:PHP codefor($i=0;$i<10;$i++){ //echo $this->microtime_float(); echo $time = microtime(); $arr = explode(" ",$time); $micro = $arr[0]*100000000; $micro_str = substr($micro."",0,6); $timestamp = $arr[1]; echo "/t".$timestamp."".$micro_str; echo '
'; }暂时是本地windows下测试不会有重复的,会不会有比较牛X的服务器计算能力猛,微秒也重复了。另外这样生成的卡号也不好一眼能看出个啥啥的。又不能随意截取其中的几位怕失去了唯一性。不知道有木有好的方法。比如移动充值卡生成机制。位数少一点的,太多了,人都晕了。。。------解决方案--------------------微秒数重复的可能性不大,况且你后面还有随机数,如果你不确定还可以增加usleep(1)等待下。但如果服务器修改时间你就没法保证微秒数不重复了。------解决方案--------------------如果只用 时间戳(可重复)+随机数(可重复) 这样的话,是不能保证100%没冲突的......建议:时间戳(可能重复)+随机数(可能重复)+数据库id或其它唯一值(唯一) 才能得到不重复的结果。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索重复 , php , 生成 , 卡号 ,以便于您获取更多的相关知识。