반응형
Web Development · PHP array_merge
PHP array_merge —
두 배열을 합치고 중복 키는 덮어쓰기
기본 설정 + 사용자 설정 패턴의 핵심 함수
시작 오늘 분석할 코드
<?php $data = array("TV1" => "500", "TV2" => "1000", "RADIO1" => "800"); $add_data = array("TV1" => "2000", "RADIO2" => "600"); $result = array_merge($data, $add_data); // 같은 키는 뒤 배열로 덮음, 없는 키는 추가 print "<PRE>"; print_r($result); print "</PRE>"; ?>
Array ( [TV1] => 2000 [TV2] => 1000 [RADIO1] => 800 [RADIO2] => 600 )
TV1은 양쪽에 있어 뒤 배열의 값(2000)으로 덮어씀. RADIO2는 두 번째 배열에만 있으니 새로 추가. 첫 배열에만 있던 TV2·RADIO1은 그대로.
용어 용어 정리
array_merge()여러 배열을 하나로 병합
중복 키 덮어쓰기문자열 키가 같으면 뒤가 이김
숫자 키 처리덮어쓰지 않고 새 인덱스로 추가
반환값병합된 새 배열 (원본 유지)
vs ++ 연산자는 앞 배열이 우선
vs array_merge_recursive중첩 배열도 병합
스프레드[...$a, ...$b]도 병합 가능
실무기본 설정 + 사용자 설정 패턴
1 동작 규칙 — 키의 종류에 따라 다름
| 키 종류 | 동작 |
|---|---|
| 문자열 키 (이 코드) | 같은 키는 뒤 배열로 덮어씀 |
| 숫자 키 | 덮지 않고 0,1,2,… 새 인덱스로 추가 |
// 숫자 키 예시 $a = [10 => "A", 20 => "B"]; $b = [10 => "X"]; print_r(array_merge($a, $b)); // → [0=>"A", 1=>"B", 2=>"X"] ← 키 10이 덮이지 않고 새로 추가
2 array_merge vs + (덧셈) 연산자
$a = ["TV1" => 500]; $b = ["TV1" => 2000]; array_merge($a, $b) // ["TV1" => 2000] 뒤가 이김 $a + $b // ["TV1" => 500] 앞이 이김 $b + $a // ["TV1" => 2000] 순서 바꾸면 결과 다름
방향이 다르다. array_merge는 "뒤가 덮음"이고 +는 "앞이 우선".
3 실무 — 기본 설정 + 사용자 설정
// 기본값 $default = ["theme" => "light", "lang" => "ko", "size" => 14]; // 사용자가 일부만 변경 $user = ["theme" => "dark"]; // 합치기 — 사용자 값이 우선 $config = array_merge($default, $user); // → ["theme"=>"dark", "lang"=>"ko", "size"=>14]
반응형
4 3개 이상 병합
$result = array_merge($a, $b, $c, $d); // 왼쪽부터 차례로 병합 → 가장 오른쪽이 가장 우선
5 PHP 7.4+ 스프레드 문법
$result = [...$data, ...$add_data]; // array_merge와 비슷하지만 약간 다름: // - 문자열 키도 뒤가 이김 (같음) // - 숫자 키도 덮지 않고 추가됨 (같음)
6 자주 하는 실수
| 실수 | 증상 | 해결 |
|---|---|---|
| +로 덮어쓰려고 함 | 앞 값 유지 (원하는 결과 반대) | array_merge 사용 |
| 숫자 키 덮어쓰기 기대 | 새 인덱스로 추가됨 | + 사용 또는 명시 키로 |
| 중첩 배열 병합 기대 | 한 단계만 병합됨 | array_merge_recursive |
| 원본 직접 변경 기대 | 새 배열 반환만 (원본 그대로) | 반환값을 받아서 사용 |
핵심 한 줄 요약
array_merge()여러 배열을 병합한 새 배열 반환
문자열 키같으면 뒤 배열 값으로 덮어씀
숫자 키덮지 않고 새로 추가됨
vs ++는 앞이 우선, merge는 뒤가 우선
실무기본 설정 + 사용자 설정 패턴
스프레드[...$a, ...$b] 도 가능 (PHP 7.4+)
중첩array_merge_recursive로 깊은 병합
반응형
'php' 카테고리의 다른 글
| PHP list() 재확인 — 배열을 변수로 분해 완전 정리 (0) | 2026.06.15 |
|---|---|
| PHP array_reverse — 배열 순서 뒤집기 완전 정리 (0) | 2026.06.15 |
| PHP array_unshift — 배열 앞에 원소 추가 완전 정리 (0) | 2026.06.15 |
| PHP array_shift — 배열 앞에서 원소 제거 + 반환 완전 정리 (0) | 2026.06.15 |
| PHP array_pop — 배열 끝에서 원소 제거 + 반환 완전 정리 (0) | 2026.06.15 |
왕진 블로그

댓글