연관 배열 병합하기
Coddy PHP 여정의 논리 & 흐름 섹션에 포함된 레슨. 68개 중 15번째.
array_merge()는 인덱스 배열에서는 원활하게 작동하지만, associative arrays를 사용할 때는 동작이 크게 달라집니다. 주요 차이점은 병합되는 arrays 사이에 중복된 문자열 키가 있을 때 이를 처리하는 방식입니다.
associative arrays를 병합할 때 두 배열에 동일한 문자열 키가 포함되어 있으면, 나중 배열의 값이 이전 배열의 값을 덮어씁니다:
<?php
$defaults = ["theme" => "light", "language" => "english", "notifications" => true];
$userSettings = ["theme" => "dark", "notifications" => false];
$finalConfig = array_merge($defaults, $userSettings);
print_r($finalConfig);
// Outputs: Array ( [theme] => dark [language] => english [notifications] => false )
?>"theme"이 "light"에서 "dark"로 변경되고 "notifications"가 true에서 false로 변경된 반면, 재정의되지 않았기 때문에 "language"는 "english"로 유지된 것을 확인하세요. 이 동작 덕분에 array_merge()는 기본값을 사용자 환경 설정으로 재정의하려는 configuration 시스템에 적합합니다.
인수의 순서가 중요합니다. 함수 호출에서 나중에 나열된 arrays의 값이 이전 값보다 우선합니다. 이러한 덮어쓰기 동작은 문자열 키에만 적용되며, 숫자 키는 인덱스가 있는 arrays와 마찬가지로 항상 순차적으로 다시 인덱싱됩니다.
챌린지
쉬움두 개의 입력을 받습니다: 기본 configuration array와 사용자 preferences array이며, 둘 다 JSON 형식입니다. 두 입력을 읽고, 각 JSON 문자열을 associative array로 변환한 다음, array_merge()를 사용하여 결합합니다(사용자 preferences가 defaults를 덮어씀). 그리고 print_r()를 사용하여 merged configuration을 출력합니다.
입력 형식: two 줄 — 각 줄에는 associative array를 나타내는 JSON 객체가 포함됩니다(예: {"theme":"light","language":"english"}).
예상 출력: 사용자 preferences가 기본값을 덮어쓴 merged configuration array를 print_r()를 사용하여 표시합니다.
직접 해보기
<?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);
?>이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리 & 흐름의 모든 레슨
직접 연습해 보세요: 온라인 PHP 컴파일러