
array_merge_recursive 함수는 중첩된 배열을 합칠 때, 기존의 값을 모두 제거하고 새로운 값을 추가하는 문제가 있습니다.
이 문제를 해결하기 위해, array_merge_recursive 함수 대신에 array_merge 함수를 사용할 수 있습니다. array_merge 함수는 중첩된 배열을 합칠 때, 기존의 값을 유지하고 새로운 값을 추가합니다.
예를 들어, 다음과 같은 배열이 있습니다.
#hostingforum.kr
php
$array1 = array(
'a' => array('x' => 1, 'y' => 2),
'b' => array('z' => 3)
);
$array2 = array(
'a' => array('x' => 4, 'y' => 5),
'c' => array('d' => 6)
);
array_merge 함수를 사용하여 두 배열을 합치면 다음과 같은 결과가 나옵니다.
#hostingforum.kr
php
$result = array_merge($array1, $array2);
print_r($result);
이 결과는 다음과 같습니다.
#hostingforum.kr
php
Array
(
[a] => Array
(
[x] => 1
[y] => 2
[x] => 4
[y] => 5
)
[b] => Array
(
[z] => 3
)
[c] => Array
(
[d] => 6
)
)
array_merge 함수를 사용하면 중첩된 배열 'a'의 경우, 기존의 값과 새로운 값을 모두 유지할 수 있습니다.
또한, array_merge_recursive 함수 대신에 array_merge_recursive_deep 함수를 사용할 수도 있습니다. array_merge_recursive_deep 함수는 array_merge_recursive 함수와 유사하지만, 중첩된 배열을 더 깊게 합칠 수 있습니다.
예를 들어, 다음과 같은 배열이 있습니다.
#hostingforum.kr
php
$array1 = array(
'a' => array(
'x' => array('a' => 1, 'b' => 2),
'y' => array('c' => 3, 'd' => 4)
),
'b' => array('z' => 5)
);
$array2 = array(
'a' => array(
'x' => array('a' => 6, 'b' => 7),
'y' => array('c' => 8, 'd' => 9)
),
'c' => array('e' => 10)
);
array_merge_recursive_deep 함수를 사용하여 두 배열을 합치면 다음과 같은 결과가 나옵니다.
#hostingforum.kr
php
$result = array_merge_recursive_deep($array1, $array2);
print_r($result);
이 결과는 다음과 같습니다.
#hostingforum.kr
php
Array
(
[a] => Array
(
[x] => Array
(
[a] => Array
(
[0] => 1
[1] => 6
)
[b] => Array
(
[0] => 2
[1] => 7
)
)
[y] => Array
(
[c] => Array
(
[0] => 3
[1] => 8
)
[d] => Array
(
[0] => 4
[1] => 9
)
)
)
[b] => Array
(
[z] => 5
)
[c] => Array
(
[e] => 10
)
)
array_merge_recursive_deep 함수를 사용하면 중첩된 배열을 더 깊게 합칠 수 있습니다.
2025-05-05 21:12