피카부 RSS 태그 관리 글쓰기 방명록 다시 시작하는 개발 블로그
2017-06-14 18:20:23

배열이란

배열은 '여러개의 값을 담아 놓는 상자'라고 생각하시면 됩니다. 배열로 선언하면 값이 없어도 배열이 됩니다. 또한 배열 선언과 동시에 값을 대입하는 것도 가능합니다.

$days = []; // 빈 배열 $days 선언

$family = ['dad', 'mom', 'son', 'daughter']; // 값이 있는 배열 $family 선언

배열의 첨자

배열 요소의 위치를 첨자라고 합니다. 첨자는 보통 연속되는 값으로 0,1,2..로 이어집니다. 이러한 첨자로 배열에 바로 접근이 가능하게 됩니다.

// 첨자는 0, 1, 2, 3
$family = ['dad', 'mom', 'son', 'daughter'];

echo $family[0]; // 'dad'

echo $family[3]; // 'daughter'

연상 배열

첨자 대신 요소의 이름(key)을 지정하여 접근 할 수도 있습니다.

$family_name = [
    'dad' => 'Bob',
    'mom' => 'Jessy',
    'son' => 'James',
    'daughter' => 'Emily'
];

echo $family_name['dad']; // 'Bob'

요소의 추가

마지막에 요소를 추가

배열의 제일 끝에 새로운 요소를 추가합니다.

//첨자 배열의 경우 
$family = ['dad', 'mom', 'son', 'daughter'];

$family[] = 'puppy'; // 배열의 제일 끝에 요소를 추가

echo $family[4]; // 'puppy'


// 연상 배열의 경우
$family_name = [
    'dad' => 'Bob',
    'mom' => 'Jessy',
    'son' => 'James',
    'daughter' => 'Emily'
];

$family_name['puppy'] = 'John';

echo $family_name['puppy']; // 'John'

가장 첫 위치에 요소를 추가

배열의 가장 첫 위치에 요소를 추가할 경우는 array_unshift()를 사용합니다.

$family = ['dad', 'mom', 'son', 'daughter'];

array_unshift($family, 'grandma');

// $family는['grandma', 'dad', 'mom', 'son', 'daughter'] 로 됩니다.

임의의 위치 요소를 추가

배열의 임의의 위치에 요소를 끼워넣습니다. array_splice()는 원래 요소를 치환하는 함수이지만, 제3인수에 0을 지정하면 요소를 지우지 않고 끼워넣을 수 있습니다.

$family = ['dad', 'mom', 'son'];

// $family[2]의 앞에'uncle'를 추가
array_splice($family, 2, 0, 'uncle');

// ['dad', 'mom', 'uncle', 'son']

복수의 요소를 추가

array_push() 함수를 사용하여 한번에 여러개의 요소를 추가합니다.

$family = ['dad', 'mom', 'son'];
array_push($family, 'puppy', 'citty');

// ['dad', 'mom', 'son', 'puppy', 'citty']

array_merge() 함수를 사용하면 배열과 배열을 결합합니다.

$family = ['dad', 'mom', 'son'];
$add_member = ['grandma', 'grandpa'];

$new_family = array_merge($add_member, $family);

// $new_family는 ['grandma', 'grandpa', 'dad', 'mom', 'son']
//array_merge는 원래의 배열 $family에 영향을 주지 않습니다.

다차원 배열

배열의 요소에도 배열 값을 가지게 할 수 있습니다.

$families = [
    [
        'dad', 'mom', 'son'
    ],
    [
        'dad', 'mom', 'daughter'
    ]
];

echo $families[0][0]; // 'dad'

echo $families[1][2]; // 'daughter'

// $families['Smith']와 $families['Williams']는 각각 배열입니다.

물론 연상 배열을 다차원 배열로 할 수도 있습니다.

$families = [
    'Smith' => [
        'dad' => 'Bob',
        'mom' => 'Jessy',
        'son' => 'James'
    ],
    'Williams' => [
        'dad' => 'Michael',
        'mom' => 'Jessy',
        'daughter' => 'Emily'
    ]
];

echo $families['Smith']['dad']; // 'Bob'

여기서는 $families['Smith']['mom']의 'Jessy'와 $families['Williams']['mom']의 'Jessy'는 문자열은 같지만 다른 배열입니다. 즉, 스미스 가문의 제시와 윌리엄 가문의 제시로 보시면 됩니다. 프로그래밍 초보 시절에는 많이 혼동되는 부분이지만 숙련되면 당연하게 생각되어질 것입니다.

배열의 삭제

배열의 삭제는 따로 정리해두었으니 참고 바로가기

마치며

PHP의 경우는 첨자 배열과 연상 배열이 같은 배열형태로 취급됩니다. 첨자 배열과 연상 배열을 합치거나 루프 구문에서 별 다른 신경쓸 것 없이 사용이 가능합니다. 하지만 다른 개발 언어에서는 전혀 다른 취급을 하는 경우도 있으니 주의하시기 바랍니다.