채택완료

for문 ~~질문 합니다 선배님들

2019-01-26 (토) 04:36:03 2,948
Copy
<table border="1" width="300" height="150">
        <?php            
            for ($i = 0; $i < 5 ; $i++)             
            {   
                echo "<tr bgcolor='lightgray' align='center'>";
                for($j = 0; $j < 5; $j++)
                {
                echo "<td></td>";
                }
                echo "</tr>";
            }
            
            ?>
        </table>

for문 위에 실행 순서~~ 가 좀 헷갈리는데 알려주시면 감사하겠습니다.

|

답변 3개 / 댓글 3개

채택된 답변
+20 포인트

안에서부터 하나씩 해석하시면 됩니다.

<td></td>를 5번 반복한다는 명령을 foo 라고 합시다.

그럼 foo는 아래와 같은 코드이겠지요?

Copy
for($j=0; $j<5; $j++) {

    echo "<td></td>";

}

이 foo를 5번 반복하는 명령을 bar 라고 합니다.

그럼 bar는 아래와 같은 코드이겠지요?

Copy
for($i=0; $i<5; $i++) {

    // foo

}

자 여기서 bar 코드 안에 빠진 부분을 채워넣어봅시다.

Copy
for($i=0; $i<5; $i++) {

    echo "<tr bgcolor='lightgray' align='center'>";

    // foo

    echo "</tr>";

}

자 다시 되짚어봅시다.

foo는 <td></td>를 5번 반복하는 코드였습니다.

이 의미를 다시 bar 안에 넣어봅시다.

Copy
for($i=0; $i<5; $i++) {

    echo "<tr bgcolor='lightgray' align='center'>";

    // <td></td>를 5번 반복한다.

    echo "</tr>";

}

그럼 최종 결과물은

Copy
<tr bgcolor='lightgray' align='center'>

    <td></td><td></td><td></td><td></td><td></td>

</tr>

<tr bgcolor='lightgray' align='center'>

    <td></td><td></td><td></td><td></td><td></td>

</tr>

<tr bgcolor='lightgray' align='center'>

    <td></td><td></td><td></td><td></td><td></td>

</tr>

<tr bgcolor='lightgray' align='center'>

    <td></td><td></td><td></td><td></td><td></td>

</tr>

<tr bgcolor='lightgray' align='center'>

    <td></td><td></td><td></td><td></td><td></td>

</tr>

가 되겠네요.

지금 헷갈리시는 부분은, $i와 $j를 함께 생각해서 그렇습니다.

이 코드에서는 $i와 $j가 서로 관여하고 있지 않습니다. 따라서 별개의 값으로 보고 분리해서 생각하시면 됩니다.

답변에 대한 댓글 2개

결과물은 확인했습니다.
echo "<tr bgcolor='lightgray' align='center'>"; 1. 실행 1번 실행하고
바로 밑에 echo "<td></td>"; //2. 5번 실행 해서 5칸 만들고
echo "</tr> 감싸주고
그다음 다시 1번으로 올라가서 행 생성 그다음에 5칸 생성 이순서가 맞는게 아닌가요?
@jessiwith 네 이해한게 맞습니다. 이해한 것과 결과물이 같지 않으신가요?
 <?php            
            for ($i = 0; $i < 5 ; $i++)// 5번 실행 5줄을 정의      
            {   
                echo "<tr bgcolor='lightgray' align='center'>"; 1. 실행
                for($j = 0; $j < 5; $j++)
                {
                echo "<td></td>"; //2. 5번 실행 
                }
                echo "</tr>"; 3. 1번 실행 
//여기까지 면 <tr bgcolor='lightgray' align='center'><tr><td></td><td></td><td></td><td></td><td></td></tr> 한행이 실행됩니다 
루트로 이런것이 5번 나오게 됩니다.
            }
            
            ?>

답변에 대한 댓글 1개

1. 실행은 1번 실행해서 한줄 만들고 2번 넘어가서 5칸 생성하고 3번 실행해서 줄마감 하고 1-2-3 이렇게 5번 반복 아닌가요?

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