rand()를 사용하여 데이터베이스의 고유 ID로 사용하려고했습니다. 그러나이 난수가 중복되지 않도록하는 방법은 무엇입니까? 경우난수가 중복되지 않도록하는 방법은 무엇입니까?
<?php
$num = '';
for ($i = 0; $i < 9; $i++)
$num .= mt_rand(0, 9);
echo '<input name="counter" value="'.$num.'">';
?>
rand()를 사용하여 데이터베이스의 고유 ID로 사용하려고했습니다. 그러나이 난수가 중복되지 않도록하는 방법은 무엇입니까? 경우난수가 중복되지 않도록하는 방법은 무엇입니까?
<?php
$num = '';
for ($i = 0; $i < 9; $i++)
$num .= mt_rand(0, 9);
echo '<input name="counter" value="'.$num.'">';
?>
당신은 데이터베이스 테이블의 고유 값을 (내가 당신을 이해하는 방법 즉)는 중복 항목이 위해 테이블에 없음을 보장하는 데이터베이스 (의 고유 인덱스를 생성하는 것이 좋습니다 삽입 할 열을 다음과 같습니다. PHP의 경우, 이미 배열에 존재하지 않는 중복 값을 확인합니다.
<?php
$unique = array();
while(count($unique) < 9)
{
$num = mt_rand(0, 9);
if(isset($unique[$num]) == false)
$unique[$num] = true;
}
print_r($unique);
?>
또는 Amal Murali 님이 링크를 게시했습니다 http://stackoverflow.com/questions/5612656/generating-unique-random-numbers-within-a-range-php php function range and shuffle을 사용하십시오. – broadband
이 방법을한다면 그것은 좋습니다.
먼저 range()
로 원하는 범위를 얻을그러면 shuffle 배열을 무작위로 가져올 수 있습니다.
이제 5 개만 원하면 array_slice을 사용할 수 있습니다.
$range = range(1, 20);
shuffle($range);
$random = array_slice($range, 0, 5);
print_r($random);
동작 예 : example
그것은 중복되지 않을 것입니까? – user3097736
중복되지 않으므로 테스트 할 수 있습니다. 복제가 불가능합니다. –
'<'. '. $ 인분' '= 입력 이름 = "카운터"값>'PHP 코드 유효하지 않다. 'print' 또는'echo'를 사용해야합니다. –
@SharanyaDutta : 물론 그렇지 않습니다. 그러나 OP가 무엇을하려고하는지 분명히하고 있으며, ''요소는 원래의 질문과 관련이 거의 없습니다. –
그런 다음 조건문을 사용하여 먼저 DB에 있는지 확인한 다음 'else'가 발견되면 중복되지 않을 때까지 다른 구문을 다시 생성하십시오. 'rand()'또는'mt_rand()'<=와 함께 다른 옵션 인 UNIX 타임 스탬프를 사용할 수도 있습니다. –