foreach 반복문에서는 shuffle 함수 사용 못 하나요? 채택완료

for문에서는  변수 정의 다음에 shuffle(변수명) 형식으로 넣어주면 랜덤 출력 잘 되던데,

foreach문에서는 출력이 안 되네요. 

 

혹시, foreach 반복문에서 랜덤으로 뿌려주는 방법이 따로 있을까요?

답변 1개

채택된 답변
+20 포인트
$arr = array(1, 2, 3, 4);

shuffle($arr);

foreach($arr as $v) {

   echo $v; 

}

 

이건 잘 됩니다.

정확하게 어떤 걸 원하시는지 잘 모르겠네요. 

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

답변에 대한 댓글 5개

담변 감사합니다. 위 예제는 잘 되네요.. 근데, 저는 아래처럼 넣으니까 에러 나더라구요.
shuffle 함수 적용하면 링크는 정상인데 이미지는 엑박으로 뜨더라구요.


<?
$img = array(
G5_THEME_URL."/img/01.png" => array("http://www.homzzang.com/b/html" => "_blank"),
G5_THEME_URL."/img/02.png" => array("http://www.homzzang.com/b/css" => "_blank"),
G5_THEME_URL."/img/03.png" => array("http://www.homzzang.com/b/js" => "_blank"),
G5_THEME_URL."/img/04.png" => array("http://www.homzzang.com/b/sql" => "_blank"),
G5_THEME_URL."/img/05.png" => array("http://www.homzzang.com/b/php" => "_blank"),
G5_THEME_URL."/img/06.png" => array("http://www.homzzang.com/b/builder" => "_self"),
G5_THEME_URL."/img/07.png" => array("http://www.homzzang.com/b/builder" => "_self"),
G5_THEME_URL."/img/08.png" => array("http://www.homzzang.com/bbs/write.php?bo_table=order" => "_self")
);

shuffle($img); // 요거 넣으면 에러나고, 주석처리하면 정상적으로 떠용.
?>

<?php
foreach($img as $i => $s) {
foreach($s as $src => $t) {
echo "<li><a href='".$src."' target='".$t."'><img src='".$i."'></a></li>";
}
}
?>
확인해보니...글자는 2중 배열에서도 랜덤 잘 되는데, 이미지는 엑박 뜨네요.
이미지 주소에 해당하는 부분이 단순히 0, 1, 2, 3, 4, 5, , 7 처럼 숫자로만 떠서 그런 것 같아요.







[이미지 경우]


<?
$img = array(
"http://www.miwit.com/theme/miwit/img/01" => array("http://www.homzzang.com/b/html" => "_blank"),
"http://www.miwit.com/theme/miwit/img/02" => array("http://www.homzzang.com/b/css" => "_blank"),
"http://www.miwit.com/theme/miwit/img/03" => array("http://www.homzzang.com/b/js" => "_blank"),
"http://www.miwit.com/theme/miwit/img/04" => array("http://www.homzzang.com/b/sql" => "_blank"),
"http://www.miwit.com/theme/miwit/img/05" => array("http://www.homzzang.com/b/php" => "_blank"),
"http://www.miwit.com/theme/miwit/img/06" => array("http://www.homzzang.com/b/builder" => "_self"),
"http://www.miwit.com/theme/miwit/img/07" => array("http://www.homzzang.com/b/builder" => "_self"),
"http://www.miwit.com/theme/miwit/img/08" => array("http://www.homzzang.com/bbs/write.php?bo_table=order" => "_self")
);

shuffle($img); // 랜덤 배열
?>

<?php
foreach($img as $i => $src) {
foreach($src as $s => $t) {
echo "<a href=\"{$s}\" target=\"{$t}\">{$i}</a><br>";
}
}
?>
[code]
$img = array(
array("/img/01.png", "http://www.homzzang.com/b/html", "_blank"),
array("/img/02.png", "http://www.homzzang.com/b/css", "_blank"),
array("/img/03.png", "http://www.homzzang.com/b/js", "_blank")
);
shuffle($img);
foreach($img as $k => $v) {
echo "<li><a href='".$v[1]."' target='".$v[2]."'><img src='".$v[0]."'></a></li>";
}
[/code]
shuffle까지 넣으실 거면 배열을 이런 식으로 바꿔서 사용하시는 게 낫겠네요.
왕계란 님 답변 참고해서 아래처럼 넣어봤는데.. 페이지 전체가 에러나네요.



$img = array(
array("G5_THEME_URL/img/01.png", "http://www.homzzang.com/b/html", "_blank"),
array("G5_THEME_URL/img/02.png", "http://www.homzzang.com/b/css", "_blank"),
array("G5_THEME_URL/img/03.png", "http://www.homzzang.com/b/js", "_blank"),
array("G5_THEME_URL/img/04.png", "http://www.homzzang.com/b/sql", "_blank"),
array("G5_THEME_URL/img/05.png", "http://www.homzzang.com/b/php", "_blank"),
array("G5_THEME_URL/img/06.png", "http://www.homzzang.com/b/builder", "_self"),
array("G5_THEME_URL/img/07.png", "http://www.homzzang.com/b/builder", "_self"),
array("G5_THEME_URL/img/08.png", "http://www.homzzang.com/bbs/write.php?bo_table=order", "_self")
);



<div class="banner">
<ul>
<?php
foreach($img as $i => $site) {
echo "<li><a href=\"{$site[1]}\" target=\"{$site[2]}\"><img src=\"{$site[0]}\"></a></li>";
?>
</ul>
</div>


혹시, 위 구문에 잘못된 표현이 있나요?
아, 해결했네요. 마지막에 } 빠져서 안 되었네요.
왕계란 님 덕분에 오늘 foreach 반복문 구문은 공부가 확실히 되었네요. 감사합니다.

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

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

로그인
🐛 버그신고