PHP - 다차원 배열: 초보자 가이드

안녕하세요, 미래의 PHP 마법사 여러분! 오늘 우리는 다차원 배열의 세계에 흥미로운 여정을 떠납니다. 그것이 조금 두려워 보일 수 있지만, 걱정 마세요 - 우리는 단계별로 설명하겠고, 이 튜토리얼의 끝을 맺을 때쯤에는 프로처럼 배열을 다루게 될 것입니다!

PHP - Multidimensional Array

다차원 배열이란?

depth에 빠지기 전에, 기본 개념부터 시작해 보겠습니다. 배열을 단순한 아이템 목록으로 상상해 보세요, 예를 들어 쇼핑 목록과 같습니다. 그런데 쇼핑 목록을 매장별로 정리하고 싶다면? 그때 다차원 배열이 유용하게 쓰입니다!

다차원 배열은 본질적으로 배열의 배열입니다. 파일 캐비닛(주 배열)과 다양한 드로어(하위 배열)이 있고, 각 드로어에는 여러 아이템이 들어 있는 것입니다.

간단한 예를 보겠습니다:

$shopping = array(
"Grocery" => array("Apples", "Bread", "Milk"),
"Hardware" => array("Hammer", "Nails", "Screwdriver")
);

이 예제에서 $shopping은 우리의 다차원 배열입니다. 이 배열에는 두 개의 하위 배열 "Grocery"와 "Hardware"가 포함되어 있으며, 각각 자신의 아이템 목록을 가지고 있습니다.

2차원 배열의 요소에 접근하기

이제 우리의 다차원 배열을 만들었으니, 그 요소에 어떻게 접근할까요? 매우 간단합니다! 여러 개의 이중대括弧 []을 사용합니다. 각 차원에 대해 하나씩 사용합니다.

<?php
$shopping = array(
"Grocery" => array("Apples", "Bread", "Milk"),
"Hardware" => array("Hammer", "Nails", "Screwdriver")
);

echo $shopping["Grocery"][0]; // 출력: Apples
echo $shopping["Hardware"][2]; // 출력: Screwdriver
?>

첫 번째 echo 문에서 우리는 "Grocery" 하위 배열에 접근하고 그 안의 첫 번째 아이템(인덱스 0)을 가져옵니다. 두 번째 echo 문은 "Hardware" 하위 배열의 세 번째 아이템(인덱스 2)을 가져옵니다.

2차원 배열을 반복하다

그런데 우리가 배열의 모든 아이템을 거쳐야 한다면 어떻게 하죠? 그때 반복이 유용하게 쓰입니다. 우리는 중첩된 foreach 루프를 사용하여 배열의 각 차원을 반복할 수 있습니다.

<?php
$shopping = array(
"Grocery" => array("Apples", "Bread", "Milk"),
"Hardware" => array("Hammer", "Nails", "Screwdriver")
);

foreach ($shopping as $store => $items) {
echo "Shopping at $store:\n";
foreach ($items as $item) {
echo "- $item\n";
}
echo "\n";
}
?>

이 코드는 다음과 같은 출력을 생성합니다:

Shopping at Grocery:
- Apples
- Bread
- Milk

Shopping at Hardware:
- Hammer
- Nails
- Screwdriver

外부의 foreach 루프는 각 매장을 반복하고, 내부의 foreach 루프는 각 매장의 아이템을 반복합니다.

다차원 배열(2차원을 넘어)

이제 한 단계 더 나아가 보겠습니다! 배열은 두 차원 이상을 가질 수 있습니다. 다음은 학교와 학급, 학생으로 구성된 3차원 배열을 만들어 보겠습니다:

<?php
$school = array(
"Grade 1" => array(
"Class A" => array("John", "Emma", "Michael"),
"Class B" => array("Sophia", "William", "Olivia")
),
"Grade 2" => array(
"Class A" => array("James", "Ava", "Alexander"),
"Class B" => array("Charlotte", "Benjamin", "Mia")
)
);

// 특정 학생에 접근하기
echo $school["Grade 1"]["Class A"][1]; // 출력: Emma

// 전체 구조를 반복하다
foreach ($school as $grade => $classes) {
echo "$grade:\n";
foreach ($classes as $class => $students) {
echo "  $class:\n";
foreach ($students as $student) {
echo "    - $student\n";
}
}
echo "\n";
}
?>

이 코드는 전체 학교 구조를 학년별, 학급별, 학생별로 출력합니다.

다차원 배열의 재귀 탐색

알 수 없는 차원 수를 가진 배열을 다루는 경우, 재귀 함수가 구원자가 됩니다. 다음은 임의의 차원 수를 가진 배열을 탐색할 수 있는 함수입니다:

<?php
function traverseArray($arr) {
foreach ($arr as $key => $value) {
if (is_array($value)) {
echo "$key is an array:\n";
traverseArray($value);
} else {
echo "$key: $value\n";
}
}
}

$complex_array = array(
"Fruits" => array(
"Red" => array("Apple", "Cherry"),
"Yellow" => "Banana"
),
"Vegetables" => array(
"Leafy" => array("Spinach", "Kale"),
"Root" => "Carrot"
),
"Quantity" => 10
);

traverseArray($complex_array);
?>

이 함수는 임의의 차원 수를 가진 배열을 탐색할 수 있습니다!

결론

이제 여러분은 PHP의 다차원 배열의 fascinat

Credits: Image by storyset