| Newsgroups |
php.bugs |
| Message-ID |
<[email protected]> |
Edit report at https://bugs.php.net/bug.php?id=71241&edit=1
ID: 71241
Patch added by: [email protected]
Reported by: [email protected]
Summary: array_replace_recursive sometimes mutates its
parameters
Status: Open
Type: Bug
Package: Variables related
PHP Version: 7.0.1
Block user comment: N
Private report: N
New Comment:
The following patch has been added/updated:
Patch Name: fix_array_replace_recursive_ref_mut
Revision: 1451433803
URL: https://bugs.php.net/patch-display.php?bug=71241&patch=fix_array_replace_recursive_ref_mut&revision=1451433803
Previous Comments:
------------------------------------------------------------------------
[2015-12-30 00:03:02] [email protected]
Description:
------------
array_replace_recursive can sometimes mutate its params if references are nested within. This appears to be new behavior in PHP7. It also affects PHPunit.
Test script and diff: https://3v4l.org/0sdbm
Patch attached.
Test script:
---------------
<?php
$one = [1];
$two = [42];
$arr1 = ['k' => &$one];
$arr2 = ['k' => &$two];
var_dump(current($one), current($two));
array_replace_recursive($arr1, $arr2);
var_dump(current($one), current($two));
Expected result:
----------------
int(1)
int(42)
int(1)
int(42)
Actual result:
--------------
int(1)
int(42)
int(42)
int(42)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=71241&edit=1