테스트 사이트 - 개발 중인 베타 버전입니다

while 반복중 중복되는 값을 제거하고자 합니다. 채택완료

내가누구야 4년 전 조회 3,553

한번에 100개의 6자리 랜덤난수를 생성하기위해 

while 문을 통해 반복 시켰습니다.

 

1회 반복 후 DB에 있는 100개의 값과 2회차 while 문의 생성 랜덤난수를 비교하여

중복된 값이 있을 경우 멈추는 것이 아닌 중복된 값을 빼고 100개를 생성하여 DB에 입력하려고 합니다.

 

</p>

<p>do {</p>

<p>   $rand_num = srand((double)microtime()*1000000); // 등등 랜덤난수 function 을 만들어서 영어대문자와 숫자 조합으로 만들고 있습니다.</p>

<p>   $sql = "select count(*) as cnt from g5_test where rand_num = '{$rand_num}' ";</p>

<p>   $row = sql_fetch($sql);</p>

<p>   $rand_list[$rand_num] = $rand_list;</p>

<p> </p>

<p>   if($row['cnt']) break; // DB에 있으면 멈춤</p>

<p> </p>

<p>} while (count($rand_list) < 100);</p>

<p> </p>

<p>foreach($rand_list as $rand) {</p>

<p>   $sql_insert; // DB에 입력</p>

<p>}

 

코드를 작성하여 테스트 중입니다.

어떻게 하면 중복값에서 멈추지 않고 매 실행 시 마다 중복값을 제외한 후 100개씩 딱 떨어지게 나올 수 있을까요?

도저히 머리가 굴러가지 않아 폭풍 검색 하다 질문 남깁니다.

 

감사합니다.

 

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
4년 전

do {         $rand_num = srand((double)microtime()*1000000);     $sql = "select count(*) as cnt from g5_test where rand_num = '{$rand_num}' ";    $row = sql_fetch($sql);        if ($row['cnt'] == 0)        $rand_list[] = $rand_num;           } while (count($rand_list) < 100);   foreach($rand_list as $rand) {    $sql_insert;  }

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

두 분 모두 답변 감사합니다.

 

균이님의 코드의 경우는 DB에 있는것과는 비교 할 수 없는거죠? 2회차 3회차 등 계속 다회차 작성할 경우 매번 100개씩만 새로 만드시는 방법인건가요?

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

4년 전

테이블에 먼저 등록된 값을 100번이나 체크할 이유는 없습니다

아래 코드로 하세요

 

$numArr = range(100000, 999999);//6자리 숫자 전부를 배열에 담으세요 shuffle($numArr); //----배열을 흔들어 주세요

$newArr = array_slice($numArr, 0,100); //100개만 잘라오세요

$numStr ='('. implode("),(", $newArr).')'; //테이블에 기록시 한번에 등록 하도록 합치세요

<span class="token variable">$insert_qry </span>="insert into Tablek (wr_1) values $numStr ";</p>

<p>sql_query(<span class="token variable">$insert_qry </span>); //insert 쿼리는 한번만 하면 됩니다</p>

<p>

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인