array2개를 포문으로 2번 반복해야 하는데용... 방법이 있을까요?
본문
<?php
$room = array('Tires', 'Oil', 'Spark', 'Plugs', 'metal');
$name = array("시금치", "콩나물", "아욱", "냉이");
shuffle($name);
for($i = 0; $i < count($room); $i++){
echo $room[$i]." : ".$name[$i]."<br/>";
}
?>
여기서 room은 가변적으로 늘어날테고
name는 고정으로 정해져있습니다.
여기서 질문 1
room(5개)의 숫자가 name(5개)과 같으면 오류가 없는데
room의 숫자가 1이라도 높아지면 오류가 생기네요.. offset를 찾을수 없다네요.. 방법이 없을까요?
질문2 질문1이 해결이 된다면
그 과정을 2번 반복해야 하는데........
for($i = 0; $i < count($room) * 2; $i++){
이렇게 하면될까요?
1번이 해결되지 않아.. 2번은 시도조차 못하고있어요.. 도와주세요 고수님들..
!-->!-->
답변 4
1번이 해결되지 않아.. 2번은 시도조차 못하고있어요<---
질문을 이해하는 것이 코드 만드는 것보다 더 어렵네요. 어떻게 할당을 하고싶다는 설명이 있어야죠
위 소스에서 metal 에는 어떤 값이 대응되게 하고싶다는 것인가요?
원하는 답변인지 모르겟으나 계속 돌아가면서 할당하는 것은 아래처럼
$k= $h = 0;
$mm =count($room);
$nn = count($name);
for($i = 0; $i < $mm * 2; $i++){
if($h && $h % $mm ==0) $h =0;
if($k && $k % $nn ==0) $k =0;
echo $room[$h]." : ".$name[$k]."<br/>";
$k++; $h++;
}
<?php $room = array('Tires', 'Oil', 'Spark', 'Plugs', 'metal'); $name = array("시금치", "콩나물", "아욱", "냉이"); $arr_size = sizeof($room); if($arr_size < sizeof($name)) $arr_size = sizeof($name); shuffle($name); for($j=0; $j<2; $j++) { for($i = 0; $i < $arr_size; $i++){ echo $room[$i]." : ".$name[$i]."<br/>"; } } ?>
오류 안날텐데요.
없는 배열 요소을 참조하려하면 echo 에 대해선 그냥 널(void)가 출력될텐데요.
즉 1번출력은
Tires : 시금치
Oil : 콩나물
Spark : 아욱
Plugs : 냉이
metal : (출력없음)
2번 출력은
Tires : 시금치
Oil : 콩나물
Spark : 아욱
Plugs : 냉이
metal : (출력없음)
(출력없음) : (출력없음)
(출력없음) : (출력없음)
(출력없음) : (출력없음)
(출력없음) : (출력없음)
(출력없음) : (출력없음)
이렇게 나올겁니다.
코드대로 조건대로 나오는건데요.
Tires : 시금치 >> room[0] name[0] >> 룸 1회차
Oil : 콩나물 >> name[1]
Spark : 아욱 >> name[2]
Plugs : 냉이 >> name[3]
metal : 시금치 >>> room[4] name[0]
Tires : 콩나물 >> room[0] name[1] >> 룸 2회차
Oil : 아욱
Spark : 냉이
Plugs : 시금치 >> name[0]
metal : 콩나물
인것 같군요
간단하게 생각한다면
복사해서 배열을 채워 넣으시면 됩니다. ( 다른방법도 있습니다.)
아래 경우는 $name 배열을 크기를 루프 크기만큼 복사해서 키워준것입니다.
$roomSize = count($room);
$nameSize = count($name);
$room_loop_su = 2; // 룸변수를 두번 돌리겠다면
$loop_limit = count( $room ) * room_loop_su;
var $new_name = array();
var $cnt = 0;
while( $cnt < $loop_limit ) {
$new_name[] = $name[ $cnt % $nameSize ];
$cnt++;
}
for( $i=0; $i < count($room) * $room_loop_su ; $i++ ) {
echo $room[ $i % $roomSize ] ." : ". $name[$i] ."<br>";
}
$name 을 회차마다 섞어 주겠다면 적당한 자리에서 suffle 을 한번 해주시면 되겠고요.
!-->