연관 배열 병합하기
Coddy PHP 여정의 논리 & 흐름 섹션에 포함된 레슨 — 68개 중 15번째.
array_merge()는 인덱스 배열과 함께 사용할 때는 원활하게 작동하지만, 연관 배열을 다룰 때는 그 동작이 크게 달라집니다. 주요 차이점은 병합되는 배열들 사이에서 중복된 문자열 키를 처리하는 방식입니다.
연관 배열을 병합할 때, 두 배열에 동일한 문자열 키가 포함되어 있으면 나중에 오는 배열의 값이 이전 배열의 값을 덮어씁니다:
<?php
$defaults = ["theme" => "light", "language" => "english", "notifications" => true];
$userSettings = ["theme" => "dark", "notifications" => false];
$finalConfig = array_merge($defaults, $userSettings);
print_r($finalConfig);
// 출력: Array ( [theme] => dark [language] => english [notifications] => false )
?>"theme"이 "light"에서 "dark"로 변경되고 "notifications"가 true에서 false로 변경된 반면, "language"는 덮어쓰여지지 않았기 때문에 "english"로 유지된 것을 확인해 보세요. 이러한 동작 방식은 기본값이 사용자 설정에 의해 덮어쓰여지도록 하려는 설정 시스템에 array_merge()를 완벽하게 적합하게 만듭니다.
인수의 순서가 중요합니다. 함수 호출 시 나중에 나열된 배열의 값이 이전 배열의 값보다 우선합니다. 이러한 덮어쓰기 동작은 문자열 키에만 적용되며, 숫자 키는 인덱스 배열과 마찬가지로 항상 순차적으로 다시 인덱싱됩니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
챌린지
쉬움두 개의 입력을 받게 됩니다: JSON 형식의 기본 설정 배열과 사용자 기본 설정 배열입니다. 두 입력을 모두 읽고, 각 JSON 문자열을 연관 배열로 변환한 다음, array_merge()를 사용하여 이들을 결합하고(사용자 설정이 기본 설정을 덮어쓰도록 함), print_r()을 사용하여 병합된 설정을 출력하세요.
입력 형식: 두 줄 - 각 줄은 연관 배열을 나타내는 JSON 객체를 포함합니다 (예: {"theme":"light","language":"english"})
예상 출력: 사용자 설정이 기본값을 덮어쓴 병합된 설정 배열이 print_r()을 사용하여 표시됩니다.
치트 시트
연관 배열을 array_merge()로 병합할 때, 중복된 문자열 키는 나중에 나오는 배열의 값으로 덮어씌워집니다:
<?php
$defaults = ["theme" => "light", "language" => "english", "notifications" => true];
$userSettings = ["theme" => "dark", "notifications" => false];
$finalConfig = array_merge($defaults, $userSettings);
print_r($finalConfig);
// 출력: Array ( [theme] => dark [language] => english [notifications] => false )
?>주요 동작:
- 동일한 이름의 문자열 키: 나중에 나오는 배열의 값이 이전 값을 덮어씁니다
- 순서가 중요함: 나중에 나열된 배열이 우선순위를 가집니다
- 숫자 키는 항상 순차적으로 다시 인덱싱됩니다
- 기본값과 사용자 설정이 있는 구성 시스템에 적합합니다
직접 해보기
<?php
// 두 개의 JSON 입력을 읽습니다.
$defaultConfig = fgets(STDIN);
$userPreferences = fgets(STDIN);
// JSON 문자열을 연관 배열로 변환합니다.
$defaultArray = (array)json_decode($defaultConfig, true);
$userArray = (array)json_decode($userPreferences, true);
// TODO: 아래에 배열을 병합하는 코드를 작성하세요.
// 병합된 구성을 출력합니다.
print_r($mergedConfig);
?>이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.