..

Search

21) 다차원 배열

다차원 배열


다차원 배열(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차원 배열까지만 사용합니다.


연습문제