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 포인트
2019-01-26 (토) 18:55:02
안에서부터 하나씩 해석하시면 됩니다.
<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개
jessiwith
2019-01-27 (일) 00:27:10
onlymilk47
2019-01-26 (토) 05:05:31
<?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개
jessiwith
2019-01-26 (토) 17:36:46
1. 실행은 1번 실행해서 한줄 만들고 2번 넘어가서 5칸 생성하고 3번 실행해서 줄마감 하고 1-2-3 이렇게 5번 반복 아닌가요?
답변을 작성하려면 로그인이 필요합니다.
echo "<tr bgcolor='lightgray' align='center'>"; 1. 실행 1번 실행하고
바로 밑에 echo "<td></td>"; //2. 5번 실행 해서 5칸 만들고
echo "</tr> 감싸주고
그다음 다시 1번으로 올라가서 행 생성 그다음에 5칸 생성 이순서가 맞는게 아닌가요?