$rank = rand(1, 10); 함수 질문입니다.

$rank = rand(1, 10); 함수 질문입니다.

QA

$rank = rand(1, 10); 함수 질문입니다.

본문

$rank = rand(1, 5);

 

이렇게 필드 5개에 하나씩 넣을려고 합니다.

 

필드1 = $rank

필드2 = $rank

필드3 = $rank

필드4 = $rank

필드5 = $rank

 

이렇게 했는데

 

값이

 

필드1 = 1

필드2 = 3

필드3 = 3

필드4 = 4

필드5 = 2

 

이런식으로 중복되는 값도 랜덤하게 들어갑니다.

 

이걸 랜덤하게 중복되는 숫자 없이 들어가게 하려면 어떤 함수 써야 되나요?

 

필드1 = 3

필드2 = 2

필드3 = 4

필드4 = 1

필드5 = 5

 

이런식으로요 ㅠㅠ
고수님들 확인부탁드립니다.

 

이 질문에 댓글 쓰기 :

답변 3


<?php
$my_rand = [1, 2, 3, 4, 5];
shuffle($my_rand);
for ($i = 0; $i < count($my_rand); $i++) {
    $j = $i + 1;
    $br = $i === count($my_rand) - 1 ? "" : "<br>";
    echo "<input id='wr_".$j."' name='wr_".$j."' value='".$my_rand[$i]."'>".$br;
}
?>

 

뭐 비슷한 방식이지만 제게는 훨 편한 자바스크립트로 출력하면 아래처럼요.

 


<?php
$my_rand = [1, 2, 3, 4, 5];
shuffle($my_rand);
?>
<script>
myRand = <?php echo json_encode($my_rand); ?>;
for (i in myRand) {
    j = Number(i) + 1;
    brTag = j === myRand.length ? "" : "<br>"; 
    document.write("<input id='wr_" + j + "' name='wr_" + j + "' value='" + myRand[i] + "'>" + brTag);
} 
</script>

<?php
$rand = range(1,5);
shuffle($rand);
echo $rand[0]; // 첫번쨰
echo $rand[1]; // 두번쨰
echo $rand[2]; // 세번쨰
echo $rand[3]; // 네번쨰
echo $rand[4]; // 다섯번쨰

 

또는

 

 


$c = true; $i = 0; $rand = [];
while($c){
  $rnd = rand(1,5);
  if(array_search($rnd, $rand) !== false){
  }else {
    $rand[] = $rnd;
    $i++;
  }
  if(count($rand) == 5) $c = false;
}
 
echo $rand[0]; // 첫번쨰
echo $rand[1]; // 두번쨰
echo $rand[2]; // 세번쨰
echo $rand[3]; // 네번쨰
echo $rand[4]; // 다섯번쨰

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 101
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT