2013-11-22 6 views
0

6 자리 숫자를 생성하고 싶습니다. 이제는이 작업이 훌륭하지만 가끔 4 자리 숫자가 생성됩니다. 자주는 아니지만 때로는 그렇습니다. 왜??rand (000000, 999999)는 때때로 4 자리 숫자를 생성합니다.

$num = rand(000000, 999999); 
+5

네 자리 숫자가 0보다 커야합니다. –

+5

은 100000이 아님 000000 –

+0

와우, PHP는 000000을 유효한 숫자로 허용합니까? 그건 꽤 틀린 것 같습니다. 편집 : 방금 Qalculate 테스트! (계산기) 0000을받습니다. 이 수학적으로 올바른지 또는 sanitisation 입력입니까? – SpliFF

답변

5
$num = rand(100000, 999999); 

어쩌면이 일을 :) 일은

+0

하하 그것은 항상 간단한 오류입니다 ... –

1

rand(000000, 999999) 그것은 90 % 0과 999999 사이의 숫자를 반환합니다 rand(0, 999999)

동일 수있는 모든 경우은 100000에서 999999까지이고 은 6 자리 숫자입니다. 이 시간이 가장 당신을 위해 작동하는 이유는

그러나 10 %에서 모든 경우의는 수는 100,000보다 작아집니다 만 1과 99999 사이 1 5 자리를 (모든 숫자를 포함 .. 1 ~ 2 자리가 여전히 덜 propable 한 다음 4 또는 5 자리 숫자입니다 알아 내기)

귀하의 문제를 해결하려면 rand(100000, 999999)에서 번호를 가져야하지만 0으로 시작하는 숫자는 포함되지 않습니다. ! 첫 번째 숫자는 항상 1이 될 것이며, 9

다른 답변은 이미 또 다른 쉬운 그냥 것 9. 0에서 6 개 자리를 얻기를위한 좋은 솔루션을 보여

for($i = 0; i < 6; i++) 
    $rand_digit[$i] = rand(0,9); 
3

생성하려는 경우 000000에서 999999까지의 숫자와 6 자리 패딩을 사용하면 str_pad 기능을 사용할 수 있습니다. 다른 사람들이 말했듯이

$rand = rand(0, 999999); 
echo str_pad($rand, 6, '0', STR_PAD_LEFT); 
0

, 당신은 $num = rand(100000, 999999);$num = rand(000000, 999999);을 바꿀 수 있지만, 값 100000 아래 예있는 6 개 자리를 가지고 수 있지만, 필요한 경우가있을 수 있습니다. 001103. 당신은 여전히 ​​$num = rand(000000, 999999);을 사용할 수 있지만 당신은 같은 것을 사용하는 것이 :이 번호를 변경하지 않을

$num = rand(000000, 999999); 
$print_num = sprintf("%06d", $num); 

를, 그것은 단지 그것에게 6 자리 형식을 제공 할 것입니다.

관련 문제