shuffle을 이용한 중복 없이 배열 불러오기 - 랜덤 배열 가져오는 방법 > 웹제작/운영

사이트 내 전체검색
[멀티검색] 먼저 왼쪽 검색창에 검색어를 입력하세요.
  • 네이버
  • 다음
  • 구글
  • 유튜브
  • 랜덤Go
[멀티검색] 먼저 왼쪽 검색창에 검색어를 입력하세요.
  • 네이버
  • 다음
  • 구글
  • 유튜브
  • 랜덤Go

웹제작/운영

PHP shuffle을 이용한 중복 없이 배열 불러오기 - 랜덤 배열 가져오는 방법

페이지 정보

profile_image
작성자 키스세븐
조회 731회 작성일 22-08-21 18:42

본문

랜덤 배열 가져오기

중복 없이 배열 불러오는 방법


랜덤으로 숫자를 가져와야 하는데, 중복이 되지 않게 불러오는 방법을 설명한다.

이것은 shuffle을 이용한 것이며, 배열은 숫자들을 넣어서 설명한다. 



shuffle을 이용한 중복 없이 배열 불러오기 - 랜덤 배열 가져오는 방법



shuffle 함수 사용 방법


기본적인 랜덤 출력 함수에는 ran( )가 있다. 이것은 마구 뽑아내는 것에는 매우 편하다.

그런데 중복인지 걸러내는 것에는 불편하다. 

그래서 이럴 때는 shuffle( ) 함수를 사용한다. shuffle는 배열을 가져올 때 편한 점도 있다.


shuffle( ) 함수의 구조는 아래와 같다. 

[code]

<?php

   배열 코드;

   shuffle( );

?>

[/code]


그런데 배열을 이용하려면 배열 코드를 미리 만든 후에 shuffle 함수로 랜덤 불러오기를 해야 한다. 배열 코드를 만드는 방법은 아래처럼 하면 된다.


  • 숫자인 경우 : $numbers = range(시작번호, 끝번호);
  • 문자인 경우 : $arr = ["첫문자", "둘째문자", "세째문자", "네째문자"];


자, 이제 이것들을 가지고 아래에서 응용과정에 들어가 보자.



중복 없이 랜덤 배열 가져오는 예제


이번에는 실제로 배열을 넣어중복 없는 랜덤 부르기를 하는 방법을 설명한다. 예제는 아래와 같다. 


숫자 중복 없이 랜덤으로 불러오기

[code]

<?php

   $numbers = range(1, 5);

   shuffle($numbers);

   foreach($numbers as $number) echo "$number ";

?>

[/code]


문자 중복 없이 랜덤 불러오기

[code]

<?php

   $arr = ["사과", "귤", "포도"];

   shuffle($arr);

   foreach($arr as $ele) echo "$ele ";

?>

[/code]


"$number "와 "$ele "에서 마지막에 한 칸 공백을 둬서 띄어쓰기를 할 수도 있다.



랜덤 불러올 때 중복없는 예제


위에서 익힌 중복 방지 랜덤 부르기의 예제를 실제로 이용해 보겠다. 

총 개수를 정해 놓고, 그 중에서 원하는 수까지만 가져와서 자동으로 멈추는 코드다.


[code]

<?php

   $total_n = 총개수; // ㄱ

   $numbers = range(0,$total_n-1); // ㄴ

   shuffle($numbers); // ㄷ

   for ($i=0;$i<$row_n;$i++) { // ㄹ

      if($i>원하는개수) break; // ㅁ

      $use_numbers=$numbers[$i]; // ㅂ

      echo $use_numbers; // ㅅ

   } // ㅇ

?>

[/code]


  • ㄱ : 불러올 대상의 총 개수를 정해 놓는 것이다. 예를 들어 총 10개면 $total_n = 10
  • ㄴ : $numbers에 숫자를 넣는다. 0부터 시작하는데, $total_n-1라고 한 것은 1~10의 범위가 아니라 0~9의 범위가 되기 때문이다. 
  • ㄷ : 받은 숫자를 마구 섞는다.
  • ㄹ : 이제 반복할 차례다. 0부터 시작해서 하나씩 숫자를 늘리며 순서를 정한다.
  • ㅁ : 원하는 개수를 넘게 되면 중지한다. 예를 들어 7개까지만이면 $i>7
  • ㅂ : 위에서 중지되기 전까지의 개수를 $use_numbers에 넣는다. 
  • ㅅ : 받은 개수대로 표시한다.


만약, 자동으로 정렬되길 바란다면, 위의 ㅅ 부분을 아래처럼 하면 된다. 

점을 하나 찍은 후에 따옴표로 추가하면 되는 것이다.

  • echo $use_numbers." "; 한 칸을 띄워서 표시한다.
  • echo $use_numbers."\n"; 엔터 줄 바꿈을 한 후 표시한다.
  • echo $use_numbers."\t"; 탭으로 일정 간격을 옆으로 가서 표시한다.


아래에는 게시판의 DB에서 중복 없이 랜덤으로 불러오는 코드도 있으니 참고해 보길 바란다.


게시판 랜덤 가져오기 - 스킨에서 게시물 랜덤으로 뿌려주기 (shuffle($list))

http://www.kiss7.kr/siteblog/64

추천0
총 87개 (1Page)
  • RSS
웹제작/운영 목록
번호 제목 조회 추천 날짜
공지 공지 475 0 03-26
86 그누보드 363 0 02-25
85 그누보드 1503 0 10-17
84 SCRIPT 742 0 10-17
83 CSS 676 0 09-10
82 PHP 1139 0 08-26
열람중 PHP 732 0 08-21
80 기타활용 648 0 08-15
79 그누보드 1227 0 08-05
78 CSS 887 0 08-04
77 HTML 1761 0 07-24
76 그누보드 480 0 07-24
75 HTML 843 0 07-21
74 CSS 716 0 07-18
73 그누보드 660 0 07-09

검색


    허브사이트 "키스세븐"
    [허브사이트란?]
    수많은 사이트와 포털을
    한 번에 모아서
    사용할 수 있는 서비스를 말합니다.