PHP에서 배열이란 인덱스가 있는 배열과 해시 테이블 둘 다 가리킨다. 즉 두 종류의 배열이 따로 없다. 실제로 PHP 배열은 해시 테이블이지만 키 값을 지정하면 인덱스를 가진 배열로도 사용할 수 있다. 그러나 이것이 무슨 의미인지 모른다 하더라도 걱정할 것은 없다. 배열 변수에 값의 집합을 할당할 때는 array() 를 사용한다. 그리고 배열에 들어갈 값은 괄호()안에 표시하며 문자열일 경우 ""로 숫자일 경우 직접 사용하면 된다.
$colors = array("blue","indigo","yellow");
위의 예제는 3개의 문자열을 갖는 colors 배열을 만든 것이다. 또는 배열 $colors 에 들어갈 값을 모를 때에는 다음과 같이 빈 배열(empty array)로 할 수 있다.
$colors = array();
이 배열에 다른 값 추가하거나 배열 값을 대체하려면 []를 이용한다. 다음과 같이 한다.
$colors[] = "hunter green";
이렇게 하면 배열 $colors 은 네 개의 값을 갖게 된다. 종종 출력이나 계산을 위해 배열 안의 한 값만을 사용할 때가 있다. 이 때에는 원하는 값을 참조하는 키를 사용한다. 여기서는 아직 따로 키를 만들지 않았다. 따라서 PHP에서 자동으로 지정해 주는 숫자 키를 사용하게 된다. 예를 들면
첫 번째 아이템 ("blue")의 키는 0 이다.
두 번째 아이템의 키는 1,
세 번째는 2와 같은 식으로 나간다.
그리고 마지막 아이템의 키는 전체 아이템의 숫자보다 1이 작은 수다. 키가 0부터 시작하기 때문이다. 그러면 키 1을 사용하면 두 번째 색깔을 출력할 수 있다.
print $colors[1];
결과는 "indigo"를 출력하게 될 것이다. 인덱스 키의 이런 사용은 아이템을 특정 순서로 갖고 있을 때 유용하다. 그러나, 키 값은 실제로 아무 의미가 없으므로 제한적이다. 그렇다면 어떻게 두 번째 키를 만들 수 있을까? 두 번째 키는 보통 의미 있는 내용으로 한다. 예를 들어 이전의 색상이 자동차 각 부분의 색상 목록으로 한다고 하자. 그러면 다음과 같이 두 번째 키를 만들면 숫자만으로 이루어 진 인덱스보다 의미를 명확히 갖게 된다.
확실히 이렇게 되면 이상한 색깔의 차가 된다. 여기서 각 아이템의 목록은 의미를 갖게 됐지만 그 순서를 잃었다. 하지만 아이템의 순서는 상관이 없으므로 무시해도 좋다. 이제 이 차의 특정 부위 색깔을 출력해 보자. 다음과 같이 하면 ‘fabric'의 색깔을 출력할 수 있다.
print $colors[fabric];
이 문장은 "yellow"를 출력한다.
일단 배열을 만들었으면 일반적으로 정렬하든, 각 값을 출력하든 배열을 조작한다. PHP는 배열 관련 함수가 많다. 대부분은 여기서 다룰 수 없다. 하지만 한 가지만 살펴보고 넘어가자. $colors 의 키 값과 해당하는 아이템을 출력하도록 해 주는 함수가 있다. 나중에 이런 식으로 출력할 일이 많이 생길 것이다. 예제를 살펴보자.
while (list($key,$value) = each($colors)) {
print "$key: $value<BR>";
}
아직 while 루프에 대해 살펴보지 않았지만 큰 상관이 없다. 위의 코드는 반복 문을 설정해 준다. each() 함수는 각 키와 그에 해당하는 값을 배열 형태로 list () 에 반환해 준다. 반환된 값은 list() 함수의 $key 와 $value 에 저장된다. Print문장은 목록에서 키 값과 해당 아이템을 출력한다. 물론 이를 갖고 다른 여러 가지 작업을 할 수 있다. 순환문이 돌 때 마다 while 문에서는 배열 내의 다음 아이템이 반환된다. 그리고 배열 내의 모든 값이 반환되었을 때 while 문이 끝난다.
위의 코드는 다음과 같은 결과를 브라우저로 나타낸다.
exterior: blue
trim: indigo
fabric: yellow
dashboard: hunter green
출력의 순서는 이전에 array() 문장에 할당한 순서다. 알파벳 순서로 출력하고 싶으면 PHP의 ksort() 함수를 사용해서 $colors 배열을 키 값으로 정렬시키면 된다.