|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2009-07-08 18:23 UTC] felipe@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Oct 20 20:00:01 2025 UTC |
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 ) )