Menu

PHP 다차원 배열: 중첩 배열과 반복문

PHP 다차원 배열은 요소가 배열인 배열이며, 단계마다 대괄호 하나로 읽습니다: $grid[1][2] 또는 $users[0]['name']. 중첩 배열을 만들고, 깊은 값을 읽고 바꾸고, 중첩 foreach로 반복하고, HTML 표를 만들고, 열을 뽑고, 행을 정렬하는 방법을 알아봅니다.

이 페이지에는 실행 가능한 에디터가 있습니다 - 편집하고 실행하면 결과를 바로 볼 수 있습니다.

다차원 배열은 요소가 배열인 배열입니다. 단계마다 대괄호 한 쌍으로 읽습니다. $grid[1][2]는 1행 2열이고, $users[0]['name']은 첫 번째 레코드의 이름입니다.

두 번째 형태인 이름 있는 필드를 가진 레코드 목록을 가장 많이 만나게 됩니다. 데이터베이스 쿼리, 디코딩한 JSON 응답, 파싱한 CSV 파일이 보통 이 형태를 줍니다. 각 레코드는 연관 배열입니다.

중첩 배열 만들기

중첩은 필요한 만큼 깊어질 수 있고, 단계마다 숫자 키와 문자열 키를 섞을 수 있습니다. 설정 배열이 흔한 예입니다. 이름 붙은 섹션마다 설정값이나 목록을 담습니다.

행과 중첩 값 추가하기

$rows[] = [...]는 행 전체를 덧붙입니다. $arr['key'][] = $value는 중첩 목록 안에 덧붙이며, 처음에는 PHP가 안쪽 배열을 만들어 주므로 값을 그룹으로 묶을 때 준비 작업이 필요 없습니다.

다차원 배열 반복하기

단계마다 foreach를 하나씩 쓰세요. 레코드 목록은 필드를 이름으로 읽으므로 보통 반복문 하나로 충분합니다. 격자라면 안쪽 반복문이 각 행의 칸을 순회합니다.

배열로 HTML 표 만들기

행 배열은 HTML 표에 그대로 대응합니다. 첫 번째 행의 키가 헤더가 되고 각 행이 <tr>이 됩니다. 실행하면 Page 탭에 렌더링된 표가 보입니다. 값을 바꾸거나 행을 추가하고 다시 실행해 보세요.

foreach (...): ... endforeach; 형태는 템플릿용으로 쓴 같은 반복문이므로 HTML이 읽기 쉽게 유지됩니다.

모든 행에서 열 하나 얻기

array_column()은 모든 행에서 필드 하나를 뽑아 평평한 목록으로 만듭니다. 세 번째 인수를 주면 다른 필드를 결과의 키로 쓰며, 레코드 목록이 조회 테이블로 바뀝니다.

필드로 행 정렬하기

usort()는 비교 함수로 행을 정렬합니다. 우주선 연산자 <=>는 -1, 0, 1을 반환하며, 이것이 정확히 usort()가 기대하는 값입니다. 내림차순으로 정렬하려면 $a와 $b를 바꾸세요.

count($players, COUNT_RECURSIVE)는 행 3개와 그 안의 필드 6개를 세므로 9를 출력합니다.

흔한 실수: 없을 수도 있는 깊은 키 읽기

cache 키가 없을 때 $config['cache']['ttl']을 읽으면 Warning: Undefined array key "cache"가 출력되고, 다음 단계에서 Warning: Trying to access array offset on null이 이어집니다. ?? 연산자는 체인 전체를 한 번에 확인하고 경고를 내지 않으므로, 선택적인 중첩 값을 읽는 안전한 방법입니다.

자주 묻는 질문

PHP 다차원 배열에서 값에 접근하려면 어떻게 하나요?

단계마다 대괄호 한 쌍을 붙이세요. $matrix[1][0]은 1행 0열이고, $users[0]['email']은 첫 번째 사용자의 이메일입니다. 각 대괄호는 앞의 대괄호가 돌려준 배열에서 읽습니다.

PHP에서 다차원 배열을 반복하려면 어떻게 하나요?

단계마다 foreach를 하나씩 중첩하세요: foreach ($rows as $row) { foreach ($row as $key => $value) { ... } }. 레코드 배열이라면 보통 반복문 하나로 충분하고 필드를 이름으로 읽습니다: $row['name'].

다차원 배열에 요소를 추가하려면 어떻게 하나요?

행 전체는 $rows[] = ['name' => 'Linus', 'age' => 54];로 덧붙이고, 중첩 배열 안에는 $groups['admins'][] = 'Grace';로 덧붙이세요. 키가 아직 없으면 PHP가 안쪽 배열을 만듭니다.

PHP에서 0으로 채운 2차원 배열을 만들려면 어떻게 하나요?

array_fill() 호출 두 개를 중첩하세요: $grid = array_fill(0, 3, array_fill(0, 4, 0));는 0이 4개씩 든 행 3개를 만듭니다. 각 행은 별도의 복사본이므로 $grid[0][0] = 5;는 첫 번째 행만 바꿉니다.

Coddy 프로그래밍 언어 일러스트

Coddy로 코딩 배우기

시작하기