
array_replace_recursive 함수는 중첩된 배열에서 새 값을 찾기 위해 재귀적으로 탐색합니다. 그러나, 중첩된 배열의 키가 동일하지 않으면 새 값을 덮어씌우지 않습니다.
예를 들어, `$data` 배열의 `address` 키는 `$newData` 배열의 `address` 키와 동일하지만, `street` 키는 다르기 때문에 새 값을 덮어씌우지 않습니다.
해결책은 중첩된 배열의 키를 일치시키는 것입니다. `$newData` 배열의 `address` 키에 `street` 키가 있는지 확인하고, 있으면 새 값을 덮어씌우고, 없으면 새 키를 추가하세요.
#hostingforum.kr
php
$data = [
'name' => 'John',
'age' => 30,
'address' => [
'street' => '123 Main St',
'city' => 'New York',
'state' => 'NY',
'zip' => '10001'
]
];
$newData = [
'name' => 'Jane',
'age' => 31,
'address' => [
'street' => '456 Park Ave',
'city' => 'Los Angeles',
'state' => 'CA',
'zip' => '90001'
]
];
if (isset($newData['address']['street'])) {
$data['address']['street'] = $newData['address']['street'];
}
$data = array_replace_recursive($data, $newData);
print_r($data);
이 코드는 `$data` 배열의 `address` 키에 `street` 키가 있는지 확인하고, 있으면 새 값을 덮어씌우고, 없으면 새 키를 추가합니다. 그 다음, `array_replace_recursive` 함수를 사용하여 `$data` 배열에 `$newData` 배열의 값을 덮어씌웁니다.
출력 결과는 다음과 같습니다.
#hostingforum.kr
php
Array
(
[name] => Jane
[age] => 31
[address] => Array
(
[street] => 456 Park Ave
[city] => Los Angeles
[state] => CA
[zip] => 90001
)
)
이러한 방법으로 중첩된 배열에서 새 값을 찾을 수 있습니다.
2025-08-11 09:25