채택완료

for문 foreach문 다수 처리시 문의

2018-08-01 (수) 12:30:37 2,402
Copy
두개일 경우

$test[0] = "세탁기/냉장고/TV";

$test[1] = "대/중/소";

 

출력

세탁기 - 대

세탁기 - 중

세탁기 - 소

냉장고 - 대

냉장고 - 중

냉장고 - 소

TV - 대

TV - 중

TV - 소

 

foreach문 두번들어감..

 

세개일 경우

$test[0] = "세탁기/냉장고/TV";

$test[1] = "대/중/소";

$test[2] = "빨강/노랑/파랑/그린";

 

출력

세탁기 - 대 - 빨강

세탁기 - 대 - 노랑

세탁기 - 대 - 파랑

세탁기 - 대 - 그린

세탁기 - 중 - 빨강

세탁기 - 중 - 노랑

세탁기 - 중 - 파랑

세탁기 - 중 - 그린

세탁기 - 소 - 빨강

세탁기 - 소 - 노랑

세탁기 - 소 - 파랑

세탁기 - 소 - 그린

냉장고 - 대 - 빨강

냉장고 - 대 - 노랑

냉장고 - 대 - 파랑

냉장고 - 대 - 그린

냉장고 - 중 - 빨강

냉장고 - 중 - 노랑

냉장고 - 중 - 파랑

냉장고 - 중 - 그린

냉장고 - 소 - 빨강

냉장고 - 소 - 노랑

냉장고 - 소 - 파랑

냉장고 - 소 - 그린

TV - 대 - 빨강

TV - 대 - 노랑

TV - 대 - 파랑

TV - 대 - 그린

TV - 중 - 빨강

TV - 중 - 노랑

TV - 중 - 파랑

TV - 중 - 그린

TV - 소 - 빨강

TV - 소 - 노랑

TV - 소 - 파랑

TV - 소 - 그린

 

foreach문 세번들어감..

 

네개일 경우...

 

다섯개일 경우...

 

더 많은 경우...

 

 

조합을 해서 저렇게 출력을 시켜야 하는데..

몇개인지 알 경우 쉬운데 몇개인지 모를경우

for문이나 foreach문을 어떻게 돌려야 할지... 아시는분 꼭 알려주시면 감사하겠습니다.
 
위 질문이 네이버 지식인에 질문에 된 부분인데 너무 궁금해서 올려봅니다.
 
|

답변 2개 / 댓글 3개

채택된 답변
+20 포인트
Copy
$test[0] = "세탁기/냉장고/TV";

$test[1] = "대/중/소";

$test[2] = "빨강/노랑/파랑/그린";

$test[3] = "양문/단문";

$test[4] = "앞문/뒷문/옆문";


for($i=count($test)-1;$i>=0;$i--){
    $array[$i] = explode('/', $test[$i]);

    if(is_array($array[$i+1])){

        for($j=0;$j<count($array[$i]);$j++){
            for($k=0;$k<count($array[$i+1]);$k++){
                $tmp[] = "{$array[$i][$j]} - {$array[$i+1][$k]}";
            }
        }
        $array[$i] = $tmp;
        unset($tmp);
        unset($array[$i+1]);
    }

}

for($i=0;$i<count($array[0]);$i++)
    echo "{$array[0][$i]}<br>";

뒤에 배열이 100개 와도 가능합니다.

답변에 대한 댓글 1개

멋져요.. 감사 드립니다.
2018-08-01 (수) 15:19:34

위에 답변을 주셨군요 ㅎ 저는 그냥 간단히 자바스크립트랑 php로 해놔서.. ㅎ

Copy
<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>다중 for문</title>

<script>
var HA = ['세탁기','냉장고','TV'];
var SIZE = ['대','중','소'];
var COLOR = ['빨강','노랑','파랑','초록']

    for (var i=0; i<HA.length;i++)
    {
        for (var x=0; x<SIZE.length;x++)
        {
           for (var y=0; y<COLOR.length;y++)

            {
             document.write(HA[i]+' - '+SIZE[x]+' - '+COLOR[y]+'</br>');
            }
        }
    }

</script>

</head>

<body>

</body>

</html>
Copy
<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>다중 for문</title>

<?
$HA = array('세탁기','냉장고','TV');
$SIZE = array('대','중','소');
$COLOR = array('빨강','노랑','파랑','초록');

    for ($i=0; $i<count($HA);$i++)
    {
        for ($x=0; $x<count($SIZE);$x++)
        {
           for ($y=0; $y<count($COLOR);$y++)
            {
             echo "$HA[$i] - $SIZE[$x] - $COLOR[$y]".'</br>';
            }
        }
    }
?>


</head>

<body>

</body>

</html>

답변에 대한 댓글 2개

답변 달아 주셔서 감사 합니다.

$test[0] ~ $test[20] 까지 있다고 가정 하면

for 문을 20 여개 만들어 하는건가요?
2018-08-01 (수) 21:09:51
음..그러면 배열자체를 for문 돌려야겠네요 ㅎ

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