중첩 루프로 반복하기
Coddy PHP 여정의 논리 & 흐름 섹션에 포함된 레슨 — 68개 중 30번째.
2차원 배열을 작업할 때 모든 요소를 처리해야 하는 경우가 많으며, 이를 위해서는 각 행을 방문한 다음 해당 행 내의 각 열을 방문해야 합니다. 여기서 중첩 루프(nested loops)가 필수적이 됩니다. 즉, 전체 그리드 구조를 체계적으로 탐색하기 위해 하나의 루프 안에 다른 루프를 사용합니다.
외부 루프는 2D 배열의 각 행을 반복하며, 내부 루프는 현재 행 내의 각 요소를 처리합니다. foreach 루프를 사용하여 이 작업이 어떻게 수행되는지는 다음과 같습니다:
<?php
$schedule = [
["Meeting", "Lunch", "Presentation"],
["Training", "Review", "Planning"],
["Workshop", "Break", "Demo"]
];
foreach ($schedule as $day) {
foreach ($day as $appointment) {
echo $appointment . "\n";
}
}
?>인덱스에 대해 더 많은 제어가 필요할 때 전통적인 for 루프를 사용할 수도 있습니다. 이 방식은 행과 열 위치 모두에 접근할 수 있게 해줍니다:
<?php
for ($row = 0; $row < count($schedule); $row++) {
for ($col = 0; $col < count($schedule[$row]); $col++) {
echo "Day " . ($row + 1) . ", Time " . ($col + 1) . ": " . $schedule[$row][$col] . "\n";
}
}
?>이 중첩 루프 패턴은 데이터를 표시하거나, 계산을 수행하거나, 전체 그리드 구조에서 특정 값을 검색하는 등 2차원 배열을 완전히 처리하는 데 있어 필수적입니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
챌린지
쉬움하나의 입력을 받게 됩니다: JSON 형식의 교실 좌석 배치를 나타내는 2차원 배열입니다. 각 내부 배열은 좌석의 행을 나타내며, 각 요소에는 학생의 이름 또는 빈 좌석을 나타내는 빈 문자열이 포함되어 있습니다. 입력을 읽고, JSON 문자열을 2차원 배열로 변환한 후, 중첩 루프를 사용하여 전체 좌석 배치를 순회하며 각 학생의 이름과 위치를 Row X, Seat Y: Name 형식으로 출력하세요.
빈 좌석(빈 문자열)은 건너뛰고 점유된 좌석에 대한 정보만 출력하십시오. 행과 좌석 번호는 0이 아닌 1부터 시작해야 합니다.
입력 형식: 좌석 배치를 나타내는 JSON 배열이 포함된 한 줄 (예시: [["Alice","Bob",""],["","Charlie","Diana"],["Eve","","Frank"]])
예상 출력: 점유된 각 좌석을 Row X, Seat Y: Name 형식으로 별도의 줄에 출력합니다. 여기서 X는 행 번호이고 Y는 좌석 번호입니다 (둘 다 1부터 시작).
치트 시트
중첩 루프를 사용하여 2차원 배열의 모든 요소를 처리합니다. 바깥쪽 루프는 행을 반복하고, 안쪽 루프는 각 행 내의 요소를 처리합니다.
foreach 루프 사용하기:
<?php
$schedule = [
["Meeting", "Lunch", "Presentation"],
["Training", "Review", "Planning"],
["Workshop", "Break", "Demo"]
];
foreach ($schedule as $day) {
foreach ($day as $appointment) {
echo $appointment . "\n";
}
}
?>인덱스 접근을 위해 전통적인 for 루프 사용하기:
<?php
for ($row = 0; $row < count($schedule); $row++) {
for ($col = 0; $col < count($schedule[$row]); $col++) {
echo "Day " . ($row + 1) . ", Time " . ($col + 1) . ": " . $schedule[$row][$col] . "\n";
}
}
?>직접 해보기
<?php
// JSON 입력을 읽습니다.
$input = trim(fgets(STDIN));
// JSON 문자열을 2D 배열로 변환합니다.
$seating = (array)json_decode($input, true);
// TODO: 아래에 코드를 작성하세요.
// 중첩 루프를 사용하여 행과 좌석을 반복합니다.
// 빈 좌석은 건너뛰고 행/좌석 번호는 1부터 시작해야 함을 기억하세요.
?>이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.