ID: 48854 Updated by: [email protected] Reported By: stakadush at yahoo dot com -Status: Open +Status: Closed Bug Type: Scripting Engine problem Operating System: Ubuntu 9.04 PHP Version: 5.3.0 New Comment:
This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. Fixed in 5.3, HEAD. Previous Comments: ------------------------------------------------------------------------ [2009-07-08 15:43:05] 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 ) ) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=48854&edit=1
