1. PHP 배열의 특징
PHP 배열의 가장 큰 특징은 유연함이다. 정수 인덱스 문자열 키를 모두 지원하고 동적인 크기를 가지며 다양한 데이터 유형을 한번에 저장할 수 있다.
- 동적 크기 초기 크기를 지정하지 않아도 되며, 요소를 추가하면서 자동으로 인덱스가 늘어난다.
- 연관 배열 지원 키로 문자열을 사용하여 key - value 형태의 자료 형을 사용할 수 있다.
- 다양한 데이터 타입 숫자, 문자열, 객체, 배열 등을 함께 저장할 수 있다.
- 해시 테이블 기반 배열은 내부적으로 해시 테이블로 구현되어 빠르게 데이터에 접근한다.
- 다차원 배열 배열의 값으로 다른 배열을 포함할 수 있어 트리나 다차원 배열 구현이 가능하다.
2. 키(key)
형변환
PHP 배열의 키는 int와 string만 가능하며, 데이터 형태에 따라 아래의 형변환이 발생한다.
- 10진수 형태의 문자열 키는 정수로 변환된다. "8" -> 8로 형변환되지만 "08"은 정수로 변환되지 않는다.
- 부동소수점 숫자는 정수로 변환되며 소수점 아래는 버린다. 8.7은 8로 형변환된다.
- boolean 값은 정수로 변환된다. true => 1, false => 0으로 변환된다.
- null은 빈 문자열 ""로 변환된다.
키 지정 규칙
- 배열 선언 시 동일한 키가 여러 번 사용되면 마지막에 저장된 값이 해당 키에 할당된다.
- 정수형과 문자열 키를 동시에 가질 수 있다.
- 키를 명시하지 않으면 이전에 사용된 정수보다 1 큰 값을 자동으로 할당한다.
$array = [
1 => 'a', // 키가 1이고 값이 'a'인 요소 추가
'1' => 'b', // 문자열 '1'은 정수 1로 변환되므로, 'a'가 'b'로 덮어쓰기됨
1.5 => 'c', // 1.5는 정수 1로 변환되므로, 'b'가 'c'로 덮어쓰기됨
-1 => 'd', // 정수 -1을 키로 갖는 요소 추가
'01' => 'e', // '01'은 문자열로 처리되므로 새로운 키로 추가됨
'1.5' => 'f', // '1.5'는 문자열로 처리되므로 새로운 키로 추가됨
true => 'g', // true는 정수 1로 변환되므로, 'c'가 'g'로 덮어쓰기됨
false => 'h', // false는 정수 0으로 변환되므로, 키 0에 값 'h' 추가
'' => 'i', // 빈 문자열 키로 값 'i' 추가
null => 'j', // null은 빈 문자열로 변환되므로, 'i'가 'j'로 덮어쓰기됨
'k', // 키가 지정되지 않았으므로, 이전 최대 정수 키(1)보다 1 큰 값인 2를 키로 사용하며, 값은 'k'
2 => 'l', // 키 2는 이미 존재하므로, 'k'가 'l'로 덮어쓰기됨
];
// 아래의 형태로 값이 할당된다.
$array = [
1 => 'g', // 최종적으로 true 키('g')가 할당됨
-1 => 'd', // -1 키는 변경되지 않음
'01' => 'e', // '01' 키로 'e' 값이 저장됨
'1.5' => 'f', // '1.5' 키로 'f' 값이 저장됨
0 => 'h', // false가 정수 0으로 변환되어 'h' 값이 저장됨
'' => 'j', // null이 빈 문자열로 변환되어 'j' 값이 저장됨
2 => 'l', // 정수 키 2에 최종적으로 'l' 값이 저장됨
];
3. 배열 구조 분해
기본 배열 구조 분해
$source_array = ['foo', 'bar', 'baz'];
[$foo, $bar, $baz] = $source_array;
echo $foo; // "foo"
echo $bar; // "bar"
echo $baz; // "baz"
PHP 7.1.0부터 배열의 구조 분해를 지원하여 배열의 값을 변수에 할당할 수 있다.
foreach에서 사용
$source_array = [
[1, 'John'],
[2, 'Jane'],
];
foreach ($source_array as [$id, $name]) {
echo "id: $id, name: $name\n";
}
// 아래처럼 출력된다.
// id: 1, name: John
// id: 2, name: Jane
foreach 문에서 다차원 배열의 구조를 분해해서 순회할 수 있다.
연관 배열 구조 분해
$source_array = ['foo' => 1, 'bar' => 2, 'baz' => 3];
['baz' => $three] = $source_array;
echo $three; // 출력: 3
$source_array = ['foo', 'bar', 'baz'];
[2 => $baz] = $source_array;
echo $baz; // 출력: "baz"
위의 예시처럼 연관 배열의 구조를 분해하여 특정 키나 인덱스를 선택해 변수에 저장할 수 있다.
출처: https://www.php.net/manual/en/language.types.array.php
PHP: Arrays - Manual
PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.
www.php.net
'PHP' 카테고리의 다른 글
[PHP] 문자열 자르기 함수 (0) | 2024.11.14 |
---|---|
[PHP] 배열의 병합 (0) | 2024.10.22 |