배열이란?
배열이란 컴퓨터 자료구조의 일종입니다. index와 그것에 대응하는 데이터들로 이루어진 자료 구조를 뜻하는 것인데요, php에서도 물론 배열을 사용할 수 있습니다. $배열이름 = array(배열요소);
로 선언하면 되는데요,
<?php
$a = array("코끼리", "사자", "얼룩말", "염소"); // 배열 선언과 동시에 초깃값을 넣어준 것입니다.
var_dump($a);
?>
//array(4) { [0]=> string(9) "코끼리" [1]=> string(6) "사자" [2]=> string(9) "얼룩말" [3]=> string(6) "염소" }
//4개의 요소를 가지고 있는 배열이고, 원소에 대한 인덱스 정보와 자료형을 알려줍니다.
배열에는 서로 다른 자료형이 요소로서 들어갈 수 있습니다.
<?php
$gildong = array("홍길동",31,88.3);
var_dump($gildong);
?>
//array(3) { [0]=> string(9) "홍길동" [1]=> int(31) [2]=> float(88.3) }
//3개의 요소를 가지고 있는 배열, []안에 들어있는 숫자는 index입니다.
배열에서 요소 추가하기
<?php
$gildong = array("홍길동",31,88.3);
array_push($gildong, "배열 추가"); // array_push($배열이름, 요소값); 으로 배열요소 추가
var_dump($gildong);
?>
//array(4) { [0]=> string(9) "홍길동" [1]=> int(31) [2]=> float(88.3) [3]=> string(13) "배열 추가" }
위의 예제를 보시면, gildong이라는 배열에 “배열 추가” 라는 요소를 추가하였습니다. 그렇게 하면, 마지막 부분에 인덱스가 추가되는 것을 확인할 수 있습니다.
<?php
$a = []; //php 5.4 이상에서, 이러한 방식으로도 배열을 선언할 수 있습니다.
$a[0] = 5; // 배열[인덱스값] = 값; 방식으로 배열에 값을 넣을 수 있습니다.
$a[1] = "하하";
$a[2] = 112.4;
$a[3] = "이건?";
array_push($a, "추가!");
var_dump($a);
?>
$배열이름[인덱스값] 으로 배열에 있는 요소에 접근할 수 있습니다.
배열에서 요소 삭제하기
<?php
$arr = array("안녕하세요","hello","hi");
unset($arr[0]); //unset(배열이름[인덱스값]); 으로 요소를 삭제할 수 있습니다.
var_dump($arr);
?>
//array(2) { [1]=> string(5) "hello" [2]=> string(2) "hi" }
원래 arr이라는 배열은 3개의 요소를 가지도록 선언되었지만, unset을 통하여 요소가 삭제된 것을 확인할 수 있습니다.
원래 인덱스 값은 0부터 1씩 증가하는 형태로 시작하는데, 삭제한 경우 인덱스 값은 재배치되지 않는 것도 확인할 수 있습니다. 아래의 주석 처리 부분을 보시면, 인덱스가 0이 아닌 1부터 시작하는 것을 확인할 수 있습니다.
연관 배열이란?
지금까지 본 배열의 형태는 인덱스 값이 0부터 1씩 증가하는 숫자의 형태였습니다. 배열의 인덱스0에 대응하는 값은 ~~, 배열의 인덱스1에 대응하는 값은 ~~ 처럼 말입니다.
연관 배열은 이와 다르게 인덱스 값에 이름이 붙어있는 경우입니다. 숫자가 대응되지 않습니다.
<?php
$rearray = array();
$rearray["나이"] = 24;
$rearray["몸무게"] = 55.6;
$rearray["토익점수"] = 600;
$rearray["좌우명"] = "떳떳하게 살자.";
var_dump($rearray);
?>
//array(4) { ["나이"]=> int(24) ["몸무게"]=> float(55.6) ["토익점수"]=> int(600) ["좌우명"]=> string(20) "떳떳하게 살자." }
위의 결과(주석 부분)을 보시면, 인덱스 값이 숫자가 아닌 제가 정의한 값으로 설정된 것을 볼 수 있습니다.
<?php
$x = array();
$x = array('level' => 100, 'weight' => 105.3);
var_dump($x);
//array(2) { ["level"]=> int(100) ["weight"]=> float(105.3) }
?>
연관 배열은 위의 예제처럼 생성과 동시에 ‘인덱스값’=값; 으로,초깃값을 정해줄 수 있습니다.