2011-07-03 11 views
3

私はユーザーのためのランダムなセキュリティ番号を作成するスクリプトを作成しています。私はこれを完了する方法を見ています。PHPループの質問

私は7桁のセキュリティ番号が必要ですが、0は含まれていませんが、rand(1111111,9999999)を使用すると、その番号の中に0が存在する可能性があります。これを確認するにはどのループが最適かと思います文字列に0が存在するかどうかをチェックするためにどのような関数を使用しますか?

答えて

4

1から9の7回の間に乱数を連結できませんでしたか?

rand(1,9) 
+0

に基づくソリューション私は、それのおかげで思ったことはありません! :) –

+0

私は答えを受け入れるために3分待たなければならない –

5

このコードは、あなたが必要とするものを行う必要があります。

$num = ''; 
for ($i = 1; $i <= 7; $i++) 
    $num .= rand(1, 9); 
$num = (int) $num; 

それがランダムに数字を一つずつ生成し、それらの文字列を構築します。次に、文字列を整数に変更します。

1

チェックしている間は、合計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); 
?> 
0

ベース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);