루젠소프트 로고

216.73.216.198 TODAY : 1,530

PHP 강의

 > 

PHP - 초급

📚 PHP 초급 - 6주차: 배열 - 03 다차원 배열

📚 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. 다차원 배열이란 무엇인가?

uploadImage

#다차원배열 은 배열 안에 또 다른 배열이 포함된 형태의 배열을 말합니다. 즉, 배열의 각 요소가 단일 값이 아니라 또 다른 배열인 경우를 의미하죠. 가장 흔하게 사용되는 형태는 2차원 배열로, 이는 마치 스프레드시트나 표(테이블)처럼 행과 열의 형태로 데이터를 저장할 때 유용합니다.

예를 들어, 학생들의 성적 정보를 저장한다고 할 때, 한 학생의 정보(이름, 과목1 점수, 과목2 점수)를 하나의 배열로 묶고, 이 학생 배열들을 다시 하나의 큰 배열에 담는다면 그것이 바로 2차원 배열이 됩니다.





2. 다차원 배열 선언 및 초기화

uploadImage

다차원 배열도 기본 배열과 동일하게 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. 다차원 배열 요소에 접근하기

uploadImage


다차원 배열의 특정 요소에 접근하려면, 각 차원의 인덱스 또는 키를 차례대로 대괄호 [] 안에 나열합니다.




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. 다차원 배열 반복문으로 다루기

uploadImage


다차원 배열의 모든 요소에 접근하거나 특정 조건에 따라 요소를 처리하려면 #반복문 을 중첩하여 사용해야 합니다. 주로 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배열함수 들에 대해 학습하겠습니다.