배열이란
배열은 '여러개의 값을 담아 놓는 상자'라고 생각하시면 됩니다. 배열로 선언하면 값이 없어도 배열이 됩니다. 또한 배열 선언과 동시에 값을 대입하는 것도 가능합니다.
$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의 경우는 첨자 배열과 연상 배열이 같은 배열형태로 취급됩니다. 첨자 배열과 연상 배열을 합치거나 루프 구문에서 별 다른 신경쓸 것 없이 사용이 가능합니다. 하지만 다른 개발 언어에서는 전혀 다른 취급을 하는 경우도 있으니 주의하시기 바랍니다.
'Dev > PHP' 카테고리의 다른 글
PHP Simple HTML DOM Parser사용 방법 (웹 크롤링 파싱) (0) | 2022.02.19 |
---|---|
Linux 리눅스 PHP 버전 확인 및 업그레이드 방법 (0) | 2021.02.21 |
[PHP] error_log 함수 사용시 한글 깨짐 문자가 제대로 보이지 않는 문제 해결 (0) | 2018.04.11 |
[PHP] 문자열에서 글자수를 기준으로 자르기 (영어 한글) (0) | 2018.03.27 |
[PHP] 배열 삭제 방법 array_splice array_values array_diff unset (0) | 2017.06.22 |
[PHP] rmdir 로 디렉토리 폴더 내부의 파일들과 같이 삭제를 하고 싶을 때 (0) | 2016.08.25 |
PHP Fatal error: Cannot redeclare 에러 해결 방법 (0) | 2016.07.26 |
CentOS 7에 yum으로 PHP 5.6을 설치하는 방법 (0) | 2016.07.18 |
php에서 간단히 mail 함수로 메일 보내기 (1) | 2014.03.13 |
PHP의 프레임워크의 역사와 현재 (CakePHP, Zend Framework, symfony, Mojavi 등) (0) | 2011.07.04 |