php如何生成不重复的卡号
就像电话卡似的,全是数字,不能带字母。
最开始想到是:
N位随机数+数据库一个表的自增id+N位随机数
不想用数据库,想到一个唯一的标准是时间。用时间戳跟上几位随机数。
假如这样生成16的卡号:
时间戳10位+6位随机数 1316651745695261
有时需要一个循环生成多个卡号,一个循环里前面的时间戳(基本是一样,除非循环里还有其它费时操作),后面的6位随机数无法保证唯一。想到结合microtime
循环调用microtime十次:
0.80717200 1316675664
0.80720600 1316675664
0.80721300 1316675664
0.80721900 1316675664
0.80722400 1316675664
0.80723000 1316675664
0.80723600 1316675664
0.80724100 1316675664
0.80724600 1316675664
0.80725200 1316675664
我想着是跟上位置在807172这里的数字便于区分开。代码:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->
for($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 '<br>';
}
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号