[PHP] 배열의 특징과 활용

2024. 11. 15. 23:06·PHP

 


 

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
'PHP' 카테고리의 다른 글
  • [PHP] 문자열 자르기 함수
  • [PHP] 배열의 병합
초오오이
초오오이
  • 초오오이
    초이
    초오오이
  • 전체
    오늘
    어제
    • 분류 전체보기 (34)
      • PHP (3)
      • Laravel (2)
      • Vue.js (4)
      • CS (22)
        • WEB (1)
        • 컴퓨터 구조 (12)
        • 운영체제 (9)
      • etc (3)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
초오오이
[PHP] 배열의 특징과 활용
상단으로

티스토리툴바