다차원 배열
다차원 배열(multidimensional array)
다차원 배열은 2차원 이상의 배열을 의미하며, 배열 요소로 또 다른 배열을 사용합니다.
2차원 배열을 이해하면 그 이상의 배열 또한 같은 방식으로 이해할 수 있습니다.
2차원 배열
2차원 배열이란 배열 요소로 또 다른 1차원 배열을 사용하는 배열을 의미합니다.
2차원 배열은 다음과 같은 문법에 따라 선언됩니다.
문법
$배열이름 = array(
array(),
array(),
...
);
2차원 배열은 1차원 배열과 같이 array() 함수를 사용하여 선언합니다.
1차원 배열과 다른 점은 array() 함수를 한 번 더 사용하여, 배열 요소에 또 다른 1차원 배열을 생성한다는 점입니다.
2차원 배열은 행과 열을 가진 행렬과 같은 모양으로 구성됩니다.
1차원 배열의 개수만큼 행의 수가 늘어나고, 열의 수는 각 1차원 배열의 배열 요소 개수로 정해집니다.
2차원 배열 요소 입력
2차원 배열도 배열 요소에 접근하기 위해서는 인덱스를 사용해야 합니다.
2차원 배열에 속한 요소에 접근할 때에는 [] 연산자를 두 번 사용하면 됩니다.
예제
$arr = array( // 1차원 배열을 3개 갖는 2차원 배열 선언
array(),
array(),
array()
);
$arr[0][0] = "apple"; // 배열 요소 입력
$arr[0][1] = "korea";
$arr[0][2] = 1000;
$arr[1][0] = "banana";
$arr[1][1] = "philippines";
$arr[1][2] = 2000;
$arr[2][0] = "orange";
$arr[2][1] = "us";
$arr[2][2] = 1500;
echo $arr[0][0].", ".$arr[0][1].", ".$arr[0][2]."<br>";
echo $arr[1][0].", ".$arr[1][1].", ".$arr[1][2]."<br>";
echo $arr[2][0].", ".$arr[2][1].", ".$arr[2][2]";
1차원 배열과 마찬가지로 2차원 배열을 생성하면서 동시에 배열 요소를 초기화할 수도 있습니다.
문법
$배열이름 = array(
array(배열요소00, 배열요소01, ...),
array(배열요소10, 배열요소11, ...),
...
);
다음 예제는 앞선 예제와 같은 2차원 배열을 생성과 동시에 초기화하는 예제입니다.
예제
$arr = array( // 1차원 배열을 3개 갖는 2차원 배열 선언과 동시에 초기화
array("apple", "korea", 1000),
array("banana", "philippines", 2000),
array("orange", "us", 1500)
);
루프를 이용한 2차원 배열로의 접근
2차원 배열도 1차원 배열과 마찬가지로 for 문에 배열의 인덱스를 이용하여 배열 요소에 접근할 수 있습니다.
하지만 2차원 배열에서는 1차원 배열과는 달리 행과 열에 대해 for 문을 2번 사용해야 합니다.
예제
for($row = 0; $row < 3; $row++) {
for($column = 0; $column < count($arr[$row]); $column++){
echo $arr[$row][$column].", ";
}
}
3차원 배열
3차원 배열은 배열 요소로 2차원 배열을 사용하는 배열을 의미합니다.
3차원 배열은 다음과 같은 문법에 따라 선언됩니다.
문법
$배열이름 = array(
array(
array(),
array(),
...
),
array(
array(),
array(),
...
),
...
);
1, 2차원 배열과 마찬가지로 3차원 배열도 생성과 동시에 초기화할 수 있습니다.
문법
$배열이름 = array(
array(
array(배열요소000, 배열요소 001, ...),
array(배열요소010, 배열요소 011, ...),
...
),
array(
array(배열요소100, 배열요소 101, ...),
array(배열요소110, 배열요소 111, ...),
...
),
...
);
간단히 생각해서 3차원 배열은 가로와 세로 거기에 높이까지 가진 정육면체 모양으로 생각할 수 있습니다.
예제
$arr = array( // 2차원 배열을 2개 갖는 3차원 배열 선언과 동시에 초기화
array(
array("apple", "korea", 1000),
array("banana", "philippines", 2000),
array("orange", "us", 1500)
),
array(
array("carrot", "vietnam", 500),
array("cucumber", "korea", 1000),
array("pumpkin", "china", 2000)
)
);
위와 같은 방식으로 4차원과 5차원 이상의 배열도 만들 수 있지만, 현실에서는 이해하기 쉬운 2차원 배열까지만 사용합니다.