Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP 연관 배열(Associative Array) 완벽 가이드: 개념, 문법, 실전 예제

PHP 연관 배열이란?

PHP에서 배열(array)키(key) => 값(value) 쌍들이 쉼표로 구분되어 나열된 자료 구조입니다. 각 값이 고유한 키와 연결되어 있는 배열을 연관 배열(Associative Array)이라고 부릅니다. 키는 반드시 문자열 또는 정수여야 하며, 값은 문자열, 숫자는 물론 객체나 다른 배열처럼 어떤 타입이든 사용할 수 있습니다.

키는 선택 사항입니다. 배열에 값만 나열하면 인덱스 배열(indexed array)이 되며, 이 경우 0부터 시작하는 위치 인덱스가 키 역할을 하게 됩니다.

배열은 array() 함수로 초기화할 수 있으며, PHP 5.4부터는 대괄호 [] 안에 요소를 직접 넣는 방식으로도 생성할 수 있습니다.

문법

// array() 함수를 이용한 연관 배열 생성
$arr = array(key1=>val1, key2=>val2, key3=>val3, ...);

// 대괄호 할당 방식을 이용한 연관 배열 생성
$arr = [key1=>val1, key2=>val2, key3=>val3, ...];

키는 정수 또는 문자열이어야 하고, 값은 PHP의 모든 타입이 될 수 있습니다. 동일한 키가 여러 번 등장하면 마지막에 할당된 값이 이전 값을 덮어쓰게 됩니다. 특정 키에 연결된 값은 다음과 같은 문법으로 접근합니다.

$arr[key1];

PHP 버전 참고 사항

대괄호([])를 사용해 배열을 할당하는 방식은 PHP 5.4부터 지원됩니다. 그 이전 버전에서는 array() 함수만 사용할 수 있으니 호환성을 고려해 선택하시기 바랍니다.

예제 1: array() 함수로 연관 배열 선언

다음 예제는 array() 함수를 사용해 연관 배열을 선언하는 방법입니다.

<?php
$arr = array(1=>"one", 2=>"two", 3=>"three");
var_dump($arr);
?>

실행 결과

array(3) {
  [1]=>
  string(3) "one"
  [2]=>
  string(3) "two"
  [3]=>
  string(5) "three"
}

예제 2: 대괄호([])로 연관 배열 선언

다음 예제는 대괄호 표기법으로 동일한 연관 배열을 생성합니다. 결과는 위 예제와 같습니다.

<?php
$arr = [1=>"one", 2=>"two", 3=>"three"];
var_dump($arr);
?>

실행 결과

array(3) {
  [1]=>
  string(3) "one"
  [2]=>
  string(3) "two"
  [3]=>
  string(5) "three"
}

foreach 루프로 배열 순회하기

연관 배열의 모든 요소는 foreach 루프를 사용해 손쉽게 순회할 수 있습니다. 키와 값을 함께 가져오려면 $key => $value 형태로 작성합니다.

<?php
$arr = [1=>"one", 2=>"two", 3=>"three"];

// foreach 루프 사용
foreach ($arr as $key => $value) {
    echo $key . "=>" . $value . "\n";
}
?>

실행 결과

1=>one
2=>two
3=>three

요소 수정 및 새 항목 추가

대괄호 표기법을 활용하면 기존 요소의 값을 수정하거나, 새로운 키-값 쌍을 배열에 추가할 수 있습니다.

<?php
$arr = [1=>"one", 2=>"two", 3=>"three"];

// 기존 배열 요소 수정
$arr[2] = "twenty";

// 배열에 새 요소 추가
$arr[10] = "ten";

// foreach 루프로 결과 확인
foreach ($arr as $key => $value) {
    echo $key . "=>" . $value . "\n";
}
?>

실행 결과

1=>one
2=>twenty
3=>three
10=>ten

마무리

연관 배열은 인덱스 번호 대신 의미 있는 키로 데이터에 접근할 수 있게 해주는 PHP의 핵심 자료 구조입니다. array() 함수와 대괄호([]) 두 가지 생성 방식을 상황에 맞게 활용하고, foreach 루프와 대괄호 표기법을 조합하면 배열의 조회, 순회, 수정, 확장까지 유연하게 처리할 수 있습니다.