
PHP 강의
>PHP - 초급
📚 PHP 초급 - 6주차: 배열 - 03 다차원 배열
![]() |
평점 | 10.0 | 라이센스 | free |
---|---|---|---|---|
사용자평점 | 10.0 | 운영체제 | ||
다운로드 | 1 | 파일크기 | 0 | |
제작사 | LUZENSOFT | 등록일 | 2025-06-30 17:15:43 | |
조회수 | 3 |
📚 PHP 초급 - 6주차: 배열 - 03 다차원 배열
안녕하세요! #PHP 초급 강좌 6주차 세 번째 시간입니다. 지난 시간에는 #PHP #배열 의 기본인 #인덱스배열 과 #연관배열 에 대해 깊이 있게 알아보았는데요. 이번 시간에는 배열의 활용 범위를 한 단계 더 넓혀주는 다차원 배열 (Multidimensional Array) 에 대해 학습하겠습니다. 다차원 배열은 복잡한 데이터를 구조적으로 저장하고 관리할 때 매우 유용하게 사용됩니다.
1. 다차원 배열이란 무엇인가?
#다차원배열 은 배열 안에 또 다른 배열이 포함된 형태의 배열을 말합니다. 즉, 배열의 각 요소가 단일 값이 아니라 또 다른 배열인 경우를 의미하죠. 가장 흔하게 사용되는 형태는 2차원 배열로, 이는 마치 스프레드시트나 표(테이블)처럼 행과 열의 형태로 데이터를 저장할 때 유용합니다.
예를 들어, 학생들의 성적 정보를 저장한다고 할 때, 한 학생의 정보(이름, 과목1 점수, 과목2 점수)를 하나의 배열로 묶고, 이 학생 배열들을 다시 하나의 큰 배열에 담는다면 그것이 바로 2차원 배열이 됩니다.
2. 다차원 배열 선언 및 초기화
다차원 배열도 기본 배열과 동일하게 array()
함수 또는 짧은 배열 문법 []
를 사용하여 선언하고 초기화합니다. 다만, 요소로 다른 배열을 넣는다는 점이 다릅니다.
2.1. 2차원 배열의 선언 및 초기화
가장 일반적인 다차원 배열인 2차원 배열은 '배열의 배열' 형태로 구성됩니다.
PHP
<?php
// 2차원 인덱스 배열 (예: 간단한 성적표)
$scores = [
[90, 85, 70], // 첫 번째 학생의 점수 (수학, 과학, 영어)
[80, 90, 95], // 두 번째 학생의 점수
[75, 70, 80] // 세 번째 학생의 점수
];
echo "<pre>";
print_r($scores);
echo "</pre>";
/* 출력:
Array
(
[0] => Array
(
[0] => 90
[1] => 85
[2] => 70
)
[1] => Array
(
[0] => 80
[1] => 90
[2] => 95
)
[2] => Array
(
[0] => 75
[1] => 70
[2] => 80
)
)
*/
echo "<br>";
// 2차원 연관 배열 (예: 사용자 정보)
$users = [
"user1" => [
"name" => "김철수",
"email" => "chulsu@example.com",
"age" => 30
],
"user2" => [
"name" => "이영희",
"email" => "younghee@example.com",
"age" => 25
],
"user3" => [
"name" => "박보검",
"email" => "bogum@example.com",
"age" => 35
]
];
echo "<pre>";
print_r($users);
echo "</pre>";
/* 출력:
Array
(
[user1] => Array
(
[name] => 김철수
[email] => chulsu@example.com
[age] => 30
)
[user2] => Array
(
[name] => 이영희
[email] => younghee@example.com
[age] => 25
)
[user3] => Array
(
[name] => 박보검
[email] => bogum@example.com
[age] => 35
)
)
*/
?>
2차원 배열은 기본적으로 바깥쪽 배열의 인덱스와 안쪽 배열의 인덱스/키를 조합하여 데이터에 접근합니다.
3. 다차원 배열 요소에 접근하기
다차원 배열의 특정 요소에 접근하려면, 각 차원의 인덱스 또는 키를 차례대로 대괄호 []
안에 나열합니다.
3.1. 2차원 인덱스 배열 요소 접근
PHP
<?php
$scores = [
[90, 85, 70], // 첫 번째 학생
[80, 90, 95], // 두 번째 학생
[75, 70, 80] // 세 번째 학생
];
// 첫 번째 학생 (인덱스 0)의 두 번째 과목 (인덱스 1) 점수
echo "첫 번째 학생의 과학 점수: " . $scores[0][1] . "<br>"; // 출력: 첫 번째 학생의 과학 점수: 85
// 세 번째 학생 (인덱스 2)의 첫 번째 과목 (인덱스 0) 점수
echo "세 번째 학생의 수학 점수: " . $scores[2][0] . "<br>"; // 출력: 세 번째 학생의 수학 점수: 75
// 값 변경하기
$scores[1][2] = 100; // 두 번째 학생의 영어 점수를 100으로 변경
echo "변경 후 두 번째 학생의 영어 점수: " . $scores[1][2] . "<br>"; // 출력: 변경 후 두 번째 학생의 영어 점수: 100
?>
3.2. 2차원 연관 배열 요소 접근
PHP
<?php
$users = [
"user1" => [
"name" => "김철수",
"email" => "chulsu@example.com",
"age" => 30
],
"user2" => [
"name" => "이영희",
"email" => "younghee@example.com",
"age" => 25
]
];
// user1의 이름 정보
echo "user1의 이름: " . $users["user1"]["name"] . "<br>"; // 출력: user1의 이름: 김철수
// user2의 이메일 정보
echo "user2의 이메일: " . $users["user2"]["email"] . "<br>"; // 출력: user2의 이메일: younghee@example.com
// 값 변경하기
$users["user1"]["age"] = 31; // user1의 나이를 31로 변경
echo "변경 후 user1의 나이: " . $users["user1"]["age"] . "<br>"; // 출력: 변경 후 user1의 나이: 31
?>
4. 다차원 배열 반복문으로 다루기
다차원 배열의 모든 요소에 접근하거나 특정 조건에 따라 요소를 처리하려면 #반복문 을 중첩하여 사용해야 합니다. 주로 foreach
반복문이 많이 사용됩니다.
4.1. 2차원 배열 전체 요소 출력 (foreach 중첩)
PHP
<?php
$scores = [
["김철수", 90, 85, 70],
["이영희", 80, 90, 95],
["박민수", 75, 70, 80]
];
echo "<h3>학생별 성적표:</h3>";
echo "<table border='1'>";
echo "<tr><th>이름</th><th>수학</th><th>과학</th><th>영어</th></tr>";
foreach ($scores as $student) {
echo "<tr>";
foreach ($student as $data) {
echo "<td>" . $data . "</td>";
}
echo "</tr>";
}
echo "</table>";
echo "<br>";
$users = [
"user1" => [
"name" => "김철수",
"email" => "chulsu@example.com",
"age" => 30
],
"user2" => [
"name" => "이영희",
"email" => "younghee@example.com",
"age" => 25
]
];
echo "<h3>사용자 정보:</h3>";
echo "<table border='1'>";
echo "<tr><th>ID</th><th>이름</th><th>이메일</th><th>나이</th></tr>";
foreach ($users as $userId => $userInfo) {
echo "<tr>";
echo "<td>" . $userId . "</td>"; // 외부 키 출력
foreach ($userInfo as $key => $value) {
echo "<td>" . $value . "</td>"; // 내부 값 출력
}
echo "</tr>";
}
echo "</table>";
?>
foreach ($scores as $student)
는 $scores
배열의 각 행(여기서는 각 학생의 정보)을 $student
라는 변수에 할당합니다. 그리고 foreach ($student as $data)
는 $student
배열(각 학생의 정보 배열) 안의 개별 데이터(이름, 점수)를 $data
에 할당하여 출력합니다.
연관 배열의 경우 foreach ($users as $userId => $userInfo)
를 사용하여 외부 키(userId
)와 내부 배열(userInfo
)을 동시에 가져올 수 있습니다.
5. 다차원 배열에 요소 추가하기
다차원 배열에 새로운 행(배열)을 추가하거나, 기존 행에 새로운 열(요소)을 추가할 수 있습니다.
5.1. 새로운 행(배열) 추가
PHP
<?php
$scores = [
[90, 85, 70],
[80, 90, 95]
];
// 새로운 학생의 점수 추가 (배열의 끝에 새 배열 추가)
$scores[] = [60, 65, 70];
echo "<pre>";
print_r($scores);
echo "</pre>";
/* 출력:
Array
(
[0] => Array
( ... )
[1] => Array
( ... )
[2] => Array
(
[0] => 60
[1] => 65
[2] => 70
)
)
*/
echo "<br>";
$users = [
"user1" => ["name" => "김철수", "age" => 30],
"user2" => ["name" => "이영희", "age" => 25]
];
// 새로운 사용자 정보 추가 (새 키와 함께 새 배열 추가)
$users["user3"] = ["name" => "박지민", "age" => 28];
echo "<pre>";
print_r($users);
echo "</pre>";
/* 출력:
Array
(
[user1] => Array ( ... )
[user2] => Array ( ... )
[user3] => Array
(
[name] => 박지민
[age] => 28
)
)
*/
?>
5.2. 기존 행에 새로운 열(요소) 추가
PHP
<?php
$scores = [
[90, 85, 70], // 첫 번째 학생
[80, 90, 95] // 두 번째 학생
];
// 첫 번째 학생에게 새로운 과목(체육) 점수 추가
$scores[0][] = 95; // 인덱스 0의 배열 끝에 95 추가
echo "<pre>";
print_r($scores);
echo "</pre>";
/* 출력:
Array
(
[0] => Array
(
[0] => 90
[1] => 85
[2] => 70
[3] => 95 // 추가됨
)
[1] => Array
( ... )
)
*/
echo "<br>";
$users = [
"user1" => [
"name" => "김철수",
"email" => "chulsu@example.com",
"age" => 30
]
];
// user1에게 전화번호 정보 추가
$users["user1"]["phone"] = "010-1234-5678";
echo "<pre>";
print_r($users);
echo "</pre>";
/* 출력:
Array
(
[user1] => Array
(
[name] => 김철수
[email] => chulsu@example.com
[age] => 30
[phone] => 010-1234-5678 // 추가됨
)
)
*/
?>
결론
이번 #PHP 초급 강좌에서는 #다차원배열 이 무엇인지, 어떻게 #다차원배열선언 및 #다차원배열초기화 를 하는지, 그리고 #다차원배열요소 에 #다차원배열접근 하는 방법과 #다차원배열반복문 을 사용하여 데이터를 처리하는 방법에 대해 알아보았습니다. 복잡한 데이터를 효율적으로 구조화하고 관리하는 데 다차원 배열은 매우 강력한 도구입니다.
다음 시간에는 배열에서 특정 요소를 검색하거나, 배열을 정렬하는 등 배열을 다루는 데 유용한 다양한 #PHP배열함수 들에 대해 학습하겠습니다.