본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP list() — 배열 분해 할당 · 구조 분해 단축 문법 완전 정리

by 왕진 2026. 7. 10.
반응형

 

 

Web Development · PHP 배열 함수

PHP list() — 배열을 여러 변수에 한 번에 분해 할당

인덱스 기반 분해 · PHP 7.1+ 단축 문법 · 키 지정 분해 완전 정리
시작 오늘 분석할 코드

list()는 배열 값을 여러 변수에 한 번에 분해 할당하는 언어 구조입니다. 배열의 각 요소를 개별 변수로 받을 때 일일이 인덱스를 지정하는 대신 한 줄로 처리할 수 있습니다. PHP 7.1부터는 [] 단축 문법으로도 사용 가능합니다.

<?php $data = array("사과", "귤", "감"); // list()로 배열 분해 할당 list($fruit0, $fruit1, $fruit2) = $data; // 위와 동일한 의미: // $fruit0 = $data[0]; // "사과" // $fruit1 = $data[1]; // "귤" // $fruit2 = $data[2]; // "감" print $fruit0; // 사과 print "<br>"; print $fruit1; // 귤 print "<br>"; print $fruit2; // 감 ?>
실제 출력 미리보기
배열 $data
[0] → "사과"
[1] → "귤"
[2] → "감"
분해 후 변수
$fruit0 = "사과"
$fruit1 = "귤"
$fruit2 = "감"
출력
사과

용어 용어 정리
list()배열 요소를 여러 변수에 한 번에 분해 할당하는 언어 구조 (함수처럼 보이지만 함수 아님)
배열 분해배열의 각 요소를 개별 변수로 꺼내는 것. 구조 분해 할당이라고도 함
인덱스 기반list()는 배열의 숫자 인덱스(0, 1, 2…)를 기준으로 분해
단축 문법 []PHP 7.1+에서 list() 대신 [] 를 사용하는 더 간결한 표기법
일부 생략list($a, , $c)처럼 중간 요소를 빈칸으로 건너뛸 수 있음
키 지정PHP 7.1+에서 list("키" => $var) 형태로 연관 배열도 분해 가능
swap 패턴list($a, $b) = [$b, $a] 로 임시 변수 없이 두 변수 값을 교환
중첩 분해list(list($a, $b), $c) 형태로 다차원 배열도 한 번에 분해 가능

1 왜 list()가 필요한가 — 인덱스 반복의 불편함
인덱스 숫자를 일일이 쓰지 않아도 되는 이유

배열에서 여러 값을 꺼낼 때 $data[0], $data[1], $data[2]처럼 반복하면 코드가 길어지고 인덱스 숫자를 잘못 쓰기 쉽습니다. list()는 이를 한 줄로 표현하면서 각 요소에 의미 있는 이름을 부여할 수 있습니다.

인덱스 직접 접근 (반복)
$fruit0 = $data[0];
$fruit1 = $data[1];
$fruit2 = $data[2];

3줄, 인덱스 실수 위험
list() 분해 할당 (한 줄)
list($fruit0, $fruit1,
$fruit2) = $data;

1줄, 의미 명확
※ list()는 외관상 함수처럼 보이지만 실제로는 PHP 언어 구조(language construct)입니다. 반환값이 있고 변수에 직접 참조를 할당합니다.

2 PHP 7.1+ 단축 문법 [] — 더 현대적인 표기
list() 대신 [] 를 쓰면 더 간결해짐

PHP 7.1부터는 list() 대신 []를 사용한 구조 분해 할당이 가능합니다. JavaScript의 배열 구조 분해와 비슷한 문법입니다. 신규 코드에서는 []를 사용하는 것이 더 권장됩니다.

// PHP 5.x 방식 list($fruit0, $fruit1, $fruit2) = $data; // PHP 7.1+ 단축 문법 — 동일한 동작 [$fruit0, $fruit1, $fruit2] = $data; // foreach에서도 사용 가능 (PHP 7.1+) $rows = [["홍길동", 25], ["김영희", 30]]; foreach ($rows as [$name, $age]) { echo "$name: $age세\n"; }

3 요소 건너뛰기 — 필요한 것만 가져오기
빈칸으로 중간 요소를 무시할 수 있음

배열의 일부 요소만 필요할 때 list() 안에서 해당 위치를 비워두면 그 요소는 무시됩니다. 모든 요소를 변수에 받을 필요가 없을 때 유용합니다.

$data = ["사과", "귤", "감"]; // 첫 번째와 세 번째만 필요할 때 list($first, , $third) = $data; echo $first; // 사과 echo $third; // 감 (귤은 무시됨) // 단축 문법으로도 동일 [$first, , $third] = $data;

 

반응형

 

4 두 변수 값 교환 (swap) — 임시 변수 없이
list()의 대표적인 실전 활용 패턴

두 변수의 값을 교환할 때 보통 임시 변수가 필요합니다. list()와 배열 리터럴을 조합하면 임시 변수 없이 한 줄로 swap이 가능합니다.

$a = "사과"; $b = "귤"; // 임시 변수 방식 (전통적) $tmp = $a; $a = $b; $b = $tmp; // list() 방식 — 한 줄로 swap list($a, $b) = [$b, $a]; echo $a; // 귤 echo $b; // 사과
※ PHP 7.1+ 단축 문법: [$a, $b] = [$b, $a]; 로도 동일하게 swap 가능합니다.

5 연관 배열 분해 (PHP 7.1+)
키 이름으로 원하는 값만 골라서 분해

PHP 7.1부터 list()에서 키를 지정해 연관 배열의 특정 값만 꺼낼 수 있습니다. 순서와 관계없이 키 이름으로 접근하므로 훨씬 명확합니다.

$person = ["name" => "홍길동", "age" => 25, "city" => "서울"]; // PHP 7.1+ 키 지정 분해 ["name" => $name, "age" => $age] = $person; echo "$name 님은 $age 세입니다."; // 홍길동 님은 25 세입니다. // DB 결과에서 필요한 컬럼만 꺼낼 때 유용 ["name" => $name, "city" => $city] = $person; // age는 무시, name과 city만 추출

6 자주 하는 실수
실수 증상 해결
연관 배열에 list() 사용 (PHP 5.x) 숫자 인덱스 기준이라 원하는 키 값을 못 가져옴 PHP 7.1+ 키 지정 문법 사용 또는 수동 할당
배열보다 변수 수가 많음 초과 변수에 null이 할당됨 — 잠재적 버그 배열 요소 수와 list 변수 수를 맞춤
문자열을 list()에 사용 TypeError — 배열이 아님 list()는 배열(array)에만 사용 가능
PHP 5.x에서 [] 단축 문법 사용 Parse error PHP 7.1+ 환경 확인 후 사용, 구버전은 list() 사용
swap 시 순서 착각 [$a, $b] = [$a, $b] — 교환 안 됨 [$a, $b] = [$b, $a] 로 우변 순서를 반전

핵심 한 줄 요약

list($a, $b) = $arr배열 값을 여러 변수에 한 번에 분해 할당
단축 문법 (PHP 7.1+)[$a, $b] = $arr 로 더 간결하게 표현
요소 건너뛰기list($a, , $c) — 빈칸으로 중간 요소 무시
swap 패턴[$a, $b] = [$b, $a] — 임시 변수 없이 값 교환
키 지정 분해["키" => $var] = $assoc — 연관 배열도 분해 가능 (PHP 7.1+)

Tags

#PHP #list함수 #배열분해 #배열할당 #구조분해 #단축문법 #PHP배열함수 #PHP함수 #PHP학습 #웹개발 #티스토리
▼ 티스토리 태그 입력란 복사용
PHP, list함수, 배열분해, 배열할당, 구조분해, 단축문법, PHP배열함수, PHP함수, PHP학습, 웹개발, 티스토리
반응형

댓글