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

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

요고꽁 2년 전 조회 1,878

$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개

채택된 답변
+20 포인트

</p>

<p><?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 ? "" : "
";

    echo "<input id='wr_".$j."' name='wr_".$j."' value='".$my_rand[$i]."'>".$br;

}

?></p>

<p>

 

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

 

</p>

<p><?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 ? "" : "
"; 

    document.write("<input id='wr_" + j + "' name='wr_" + j + "' value='" + myRand[i] + "'>" + brTag);

} 

</script></p>

<p>

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

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

핑크빈
2년 전

</p>

<p><?php</p>

<p>$rand = range(1,5);</p>

<p>shuffle($rand);</p>

<p>echo $rand[0]; // 첫번쨰</p>

<p>echo $rand[1]; // 두번쨰</p>

<p>echo $rand[2]; // 세번쨰</p>

<p>echo $rand[3]; // 네번쨰</p>

<p>echo $rand[4]; // 다섯번쨰</p>

<p>

 

또는

 

 

</p>

<p>$c = true; $i = 0; $rand = [];</p>

<p>while($c){</p>

<p>  $rnd = rand(1,5);</p>

<p>  if(array_search($rnd, $rand) !== false){</p>

<p>  }else {</p>

<p>    $rand[] = $rnd;</p>

<p>    $i++;</p>

<p>  }</p>

<p>  if(count($rand) == 5) $c = false;</p>

<p>}</p>

<p> </p>

<p>echo $rand[0]; // 첫번쨰</p>

<p>echo $rand[1]; // 두번쨰</p>

<p>echo $rand[2]; // 세번쨰</p>

<p>echo $rand[3]; // 네번쨰</p>

<p>echo $rand[4]; // 다섯번쨰</p>

<p>

 

 

 

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

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

프라푸치노K

배열에 순서대로 넣고 정렬을 랜덤하게 하는것도 방법입니다

https://pblab.tistory.com/24

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

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

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

로그인