배열 구성 중 랜덤으로 선택하려면?
본문
$genre = array(
array("A.php", "A"), // (주소, 이름)
array("B.php", "B"),
array("C.php", "C"),
array("D.php", "D")
);
위 $genre 배열변수를 foreach 구문 이용해 $g로 치환할 경우
$g[0]은 주소, $g[1]은 이름이 되잖아요.
그럴 경우, 주소랑 이름이 각각 4개의 배열이 생성되잖아요.
주소: $g[0][0], $g[0][1], $g[0][2], $g[0][3]
이름: $g[1][0], $g[1][1], $g[1][2], $g[1][3]
위 주소 배열 중 하나를 랜덤으로 불러오려고 합니다. 아래처럼 했는데, 안 되네요.
$max = sizeof($g[0])-1; // $g[0] 배열의 갯수에서 1을 뺀 숫자를 변수 $max에 할당 (최대값)
$rand = rand (0, $max); // 0 ~ 최대값 중 랜덤으로 숫자를 하나 골라 $rand 변수에 할당
<?=$genre[0][$rand]?>
ps.
sizeof vs count 함수 차이점?
답변 2
<?
$genre = array(
array("A.php", "A"),
array("B.php", "B"),
array("C.php", "C"),
array("D.php", "D")
);
$max = sizeof($genre) - 1;
$rand = rand (0, $max);
echo $genre[$rand][0];
?>
우선은 $g라는 변수는 어디에서 오는지 모르겠네요. 오타를 내신 건가 싶기도 하고.
그리고 주소값은
$g[0][0]
$g[0][1]
$g[0][2]
이게 아니라
$g[0][0]
$g[1][0]
$g[2][0]
이렇게 되어 있습니다.
참고로 sizeof(), count()가 php에서는 같은 함숩니다.
php.net에 가서 검색해 보시면 아시겠지만 sizeof() 설명글에는 count() 함수에 대한 별칭이라고 나옵니다.
count(), sizeof() 둘 중에 편한 거 쓰시면 됩니다.
!-->예제
<?php
$list[] = '1';
$list[] = '2';
$list[] = '3';
shuffle($list);
foreach($list as $value) {
echo $value;
}
?>