2014-01-13 2 views
1

rand()를 사용하여 데이터베이스의 고유 ID로 사용하려고했습니다. 그러나이 난수가 중복되지 않도록하는 방법은 무엇입니까? 경우난수가 중복되지 않도록하는 방법은 무엇입니까?

<?php 

$num = ''; 
for ($i = 0; $i < 9; $i++) 
    $num .= mt_rand(0, 9); 
echo '<input name="counter" value="'.$num.'">'; 
?> 
+2

'<'. '. $ 인분' '= 입력 이름 = "카운터"값>'PHP 코드 유효하지 않다. 'print' 또는'echo'를 사용해야합니다. –

+1

@SharanyaDutta : 물론 그렇지 않습니다. 그러나 OP가 무엇을하려고하는지 분명히하고 있으며, ''요소는 원래의 질문과 관련이 거의 없습니다. –

+0

그런 다음 조건문을 사용하여 먼저 DB에 있는지 확인한 다음 'else'가 발견되면 중복되지 않을 때까지 다른 구문을 다시 생성하십시오. 'rand()'또는'mt_rand()'<=와 함께 다른 옵션 인 UNIX 타임 스탬프를 사용할 수도 있습니다. –

답변

-1

당신은 데이터베이스 테이블의 고유 값을 (내가 당신을 이해하는 방법 즉)는 중복 항목이 위해 테이블에 없음을 보장하는 데이터베이스 (의 고유 인덱스를 생성하는 것이 좋습니다 삽입 할 열을 다음과 같습니다. PHP의 경우, 이미 배열에 존재하지 않는 중복 값을 확인합니다.

<?php 
    $unique = array(); 

    while(count($unique) < 9) 
    { 
    $num = mt_rand(0, 9); 

    if(isset($unique[$num]) == false) 
     $unique[$num] = true; 
    } 

    print_r($unique); 
?> 
+0

또는 Amal Murali 님이 링크를 게시했습니다 http://stackoverflow.com/questions/5612656/generating-unique-random-numbers-within-a-range-php php function range and shuffle을 사용하십시오. – broadband

-2

이 방법을한다면 그것은 좋습니다.

먼저 range()

로 원하는 범위를 얻을

그러면 shuffle 배열을 무작위로 가져올 수 있습니다.

이제 5 개만 원하면 array_slice을 사용할 수 있습니다.

$range = range(1, 20); 
shuffle($range); 
$random = array_slice($range, 0, 5); 

print_r($random); 

동작 예 : example

+0

그것은 중복되지 않을 것입니까? – user3097736

+0

중복되지 않으므로 테스트 할 수 있습니다. 복제가 불가능합니다. –

관련 문제