array_merge_recursive modifies arrays after first one
| Bug #48854 | array_merge_recursive modifies arrays after first one | ||||
|---|---|---|---|---|---|
| Submitted: | 2009-07-08 15:43 UTC | Modified: | 2009-07-09 01:58 UTC | ||
| From: | stakadush at yahoo dot com | Assigned: | |||
| Status: | Closed | Package: | Arrays related | ||
| PHP Version: | 5.3.0 | OS: | Ubuntu 9.04 | ||
| Private report: | No | CVE-ID: | None | ||
[2009-07-08 15:43 UTC] stakadush at yahoo dot com
Description:
------------
array_merge_recursive seems to modify the arrays which are passed,
except for the first one.
it turns all first-level non-array elements, into arrays.
the code will explain it better :)
Reproduce code:
---------------
$array1 = array(
'friends' => 5,
'children' => array(
'dogs' => 0,
),
);
$array2 = array(
'friends' => 10,
'children' => array(
'cats' => 5,
),
);
echo sprintf("Second array before: %s\n", print_r($array2, true));
$merged = array_merge_recursive($array1, $array2);
echo sprintf("Second array after: %s\n", print_r($array2, true));
Expected result:
----------------
to have $array2 untouched after array_merge_recursive:
Array
(
[friends] => 10
[children] => Array
(
[cats] => 5
)
)
Actual result:
--------------
$array2 gets modified after array_merge_recursive, and every first-
level no-array element, gets turned into an array (in this case
'friends')...
Array
(
[friends] => Array
(
[0] => 10
)
[children] => Array
(
[cats] => 5
)
)
Patches
Pull Requests
History
AllCommentsChangesGit/SVN commits
[2009-07-08 18:23 UTC] felipe@php.net