Q&A

댓글 4

  • $a = range(0, 5); // 0~5까지의 숫자로 이루어진 배열을 자동 생성

    shuffle($a);

    $b = array_pop($a);

    $c = array_pop($a);

     

    이렇게 두 개 뽑으면 됩니다.

    단, 갯수가 아주 많은 경우 이렇게 배열을 만들어서 섞는 방식은 다소 느릴 수 있어요.

    겨우 2개 뽑으려고 수만 개를 섞어야 한다면 비효율적이겠지요?

  • @기진곰
    먼저뽑힌 것은 제외하고 뽑게 되는건가요??
  • @웹지기
    array_pop으로 뽑으면 원본 배열에서 해당 값이 삭제됩니다. 따라서 원본 배열 내에 중복이 없었다면 결과에도 중복이 발생하지 않습니다.
  • @기진곰
    게시판 목록에 인피드 광고를 좀더 불규칙하게 노출 되도록 하려고 질문 작성했는데 잘 처리 되었네요 ㅋ

    {@
    $a = range(0, $module_info->list_count - 5); // 0~5까지의 숫자로 이루어진 배열을 자동 생성
    shuffle($a);
    $b = array_pop($a);
    $c = array_pop($a);
    }

    $i==$b || $i==$c || $module_info->list_count - 1 == $i