我正在創建一個爲用戶創建隨機安全編號的腳本,我正在研究如何完成此操作。PHP循環問題
我需要一個7位數的安全號碼,但不包含0,但是當使用rand(1111111,9999999)
時,該號碼內仍有可能存在0
,我想知道哪個迴路最好檢查一下,我會用什麼函數來檢查字符串中是否存在0?
我正在創建一個爲用戶創建隨機安全編號的腳本,我正在研究如何完成此操作。PHP循環問題
我需要一個7位數的安全號碼,但不包含0,但是當使用rand(1111111,9999999)
時,該號碼內仍有可能存在0
,我想知道哪個迴路最好檢查一下,我會用什麼函數來檢查字符串中是否存在0?
難道你不能連續7次在1和9之間的隨機數?
rand(1,9)
此代碼應該做你需要的東西:
$num = '';
for ($i = 1; $i <= 7; $i++)
$num .= rand(1, 9);
$num = (int) $num;
它隨機產生數字逐一建立一個字符串他們。然後,它將字符串更改爲一個整數。
使用while檢查不會有幫助,因爲總共有9 7個案例。你不知道下一次你會得到哪種情況。 因此使用rand 7次更好。
<?php
function myRand($length){
$ans=0;
for($i=0;$i<$length;$i++){
$ans=$ans*10+rand(1,9);
}
return $ans;
}
echo myrand(7);
?>
解決方案基於基礎9.
$p = array();
$p[0] = 1;
for ($i=1; $i<=6; $i++):
$p[$i] = $p[$i-1] * 9;
endfor;
$max = $p[6] * 9 - 1;
$rand = rand(0,$max);
$ret = array();
for ($i=6; $i>=0; $i--):
$tmp = $rand/$p[$i];
$tmp = floor($tmp);
$rand = $rand - $p[$i] * $tmp;
$ret[] = (string)($tmp + 1);
var_dump($tmp);
endfor;
$ret = implode($ret);
var_dump($ret);
我從來沒有想到這一點,謝謝! :) –
我必須等待3分鐘才能接受答案 –