PHP隨機數字怎麼字母加數字組合,前兩個是字母後面是數字?
PHP隨機數字怎麼字母加數字組合,前兩個是字母後面是數字?
樓上說的思路沒錯,隨機的數量太大會出現重複是很正常的,按你的需求寫了個方法, 有興趣的話, 可以跑個百萬次看看重複的概率是多少
<code>function getRandomString($prefixLength = 2, $suffixLength = 6) { $t = ''; for ($i=0; $i<$prefixLength; $i++) { $salt = mt_rand(1000, 9999); if ($salt % 2) { $t .= chr(mt_rand(97,122)); } else { $t .= chr(mt_rand(65,90)); } } $min = intval(str_pad('1', $suffixLength, '0', STR_PAD_RIGHT)); $max = intval(str_repeat('9', $suffixLength)); return $t . mt_rand($min, $max); } </code>
先生成隨機字母,在產生隨機數字,不過這樣可能出現重複,想盡量避開重複只能從後面的數字下手啦。如下例子你試試看呢
<code>function randomKey(){ $re = ''; $letter = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; while(strlen($re)<2) { $re .= $letter[rand(0, strlen($letter)-1)]; /** 从$letter中随机产生一个字符 */ } $_rand = mt_rand(10000000, 99999999); /** 生成8位随机数 */ list($usec, $sec) = explode(" ", microtime()); /** 获取微秒时间戳 */ $microtime = str_replace(".", "", ((float)$usec + (float)$sec)); /** 处理字符串 */ $result = $re.$_rand.$microtime; }</code>
這樣產生的隨機數可能有點長,你可以把隨機數字去掉,直接使用字母加微妙時間戳也行。僅供參考
你隨機倆字母 在隨機些數組 然後拼接到一起不就可以嗎?還是有特殊需求?