2013-01-24 3 views
-3

이 코드를 사용하여 각각 6 개의 숫자가있는 1000 개의 레코드를 생성하지만 고유 레코드가 필요합니다. 내 방식이 올바른 방법일까요?6 자리 숫자가있는 고유 한 1000 레코드

<?php 

for ($i=1; $i<=1000; $i++) 
    { 
    echo "<br>"; 
    echo str_pad(mt_rand(0, 999999), 6, '0', STR_PAD_LEFT); 
    } 

?> 
+2

귀하의 방법은 괜찮지 만, 그것은 고유 번호가 1000까지 채워질 때까지 중복 레코드가 배열과 루프를 사용 –

+0

당신은 확인하지 않습니다. – Kermit

+3

'100000'에서 '100999'까지만 계산;) 각 숫자는 6 자리이며 고유합니다. * 편집 : * 요구 사항을 더 잘 설명하고 싶을 수 있습니다. –

답변

1
<?php 
$numbers = array(); 
while (count($numbers)<1000) { 
    $numbers[] = str_pad(mt_rand(0, 999999), 6, '0', STR_PAD_LEFT); 
    $numbers = array_unique($numbers); 
} 
foreach ($numbers as $number) { 
    echo $number."<br/>"; 
} 
?> 
+0

와우, array_unique()와 count()를 1000 번 호출 ... 이것은 비효율적 일 수 있을까? – nickb

+0

어레이 번호는 1100 번으로하고, array_unique를 실행하고 배열에서 처음 1000 번 번호를 가져 와서 배열을 생성 할 수 있습니다. – Antony

+0

여전히 1000 개의 고유 번호가 생성되지 않을 가능성이 있으며, 이제는 필요한 것보다 100 개 더 많은 숫자가 생성되었습니다. – nickb

관련 문제