PHP 스프레드 연산자(`...`) 활용 가이드: 배열 합치기와 실전 팁
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
PHP 배열 처리 및 함수 매개변수 관리에 관심 있는 개발자(중간~고급 수준)
핵심 요약
...
연산자는 배열을 인수 목록 또는 배열 리터럴로 펼치는 기능- 예:
array_merge(...$data)
- 다중 배열 병합 시
...
으로 간결하게 처리 가능 ['a', 'b', 'c'] = [...$arr1, ...$arr2]
- 동적 매개변수 전달에 유리 (예:
greet(...$params)
) - PHP 8+에서 키 기반 배열도 지원
섹션별 세부 요약
1. 스프레드 연산자 기본 개념
...
연산자는 배열을 인수 목록 또는 배열 리터럴로 펼침- 예:
$all = [...$letters1, ...$letters2]
array_merge(...$data)
로 중첩 배열 병합 가능$data
배열의 각 요소를array_merge()
의 인수로 전달
2. 중첩 배열 처리 예시
- 다중 중첩 배열 펼치기:
```php
array_merge(...[...[['a', 'b'], ['s', 't', 'u']], ['c'], ['d', 'e']])
```
- 내부
...
로 중첩 배열 펼침 후 외부...
로array_merge()
에 전달
3. 함수 매개변수 전달 활용
- 동적 매개변수 전달 예:
```php
function greet($name, $age) { ... }
$params = ['Alamin', 28];
greet(...$params); // "Hello, Alamin! You are 28."
```
- PHP 8+에서 키 기반 배열도 지원:
```php
$data = ['name' => 'Alamin', 'email' => 'you@example.com'];
createUser(...$data);
```
4. 사용 불가능한 함수 제한사항
- 단일 배열 인수를 기대하는 함수는
...
사용 불가 array_map()
,array_filter()
,count()
,sort()
등- 예시 실패 사례:
```php
array_map(...[['strtoupper'], ['a', 'b']]); // ❌ 오류 발생
```
5. 배열 평탄화 예시
array_walk_recursive()
활용한 중첩 배열 처리:
```php
function flatten(array $array): array { ... }
$nested = [['a', 'b'], ['c', ['d', 'e']], 'f'];
print_r(flatten($nested)); // ['a', 'b', 'c', 'd', 'e', 'f']
```
결론
...
연산자는 배열 병합, 동적 인수 전달, 코드 가독성 향상에 유리- 단일 배열 인수를 기대하는 함수는 사용 불가 (예:
array_map()
) - PHP 8+에서는 키 기반 배열도 지원하여 유연한 사용 가능