Warning: Undefined array key "mobile_dir" in /home/kagla/new-sir/old/common.php on line 315
array2개를 포문으로 2번 반복해야 하는데용... 방법이 있을까요?

array2개를 포문으로 2번 반복해야 하는데용... 방법이 있을까요?

array2개를 포문으로 2번 반복해야 하는데용... 방법이 있을까요?

QA

array2개를 포문으로 2번 반복해야 하는데용... 방법이 있을까요?

답변 4

본문


<?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++;
}

 

 

 

 

 

아 .. ㅎㅎ 결과는 제가 원하는게 맞는것 같아요 ㅎㅎ

다시 2번만 설명드리면 랜덤으로 짝을 짓는 포문을 2번 반복시키는거에요

그걸 안적어놨네요 ㅎㅎ;;



$room은 가변적으로 늘어나게될 상황이고요
$name는 고정적으로 정해 놓을거에요

$room에 랜덤으로 $name를 짝지을건데

$room의 길이가 $name보다 길어지면 오류가 나더라구요.


<?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 을 한번 해주시면 되겠고요.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,406
© SIRSOFT
현재 페이지 제일 처음으로