diff options
| author | Brian Shire <shire@php.net> | 2008-01-14 22:10:09 +0000 |
|---|---|---|
| committer | Brian Shire <shire@php.net> | 2008-01-14 22:10:09 +0000 |
| commit | 751b0807b1b2c9b37366d368d941696ce760ad78 (patch) | |
| tree | 973ed579d5c14198c6ad4b1dbf7702074c439375 /ext/standard/tests/array/bug42850.phpt | |
| parent | a2581f81d1e3e7e8823fd5e8ee6786f0d2accf72 (diff) | |
| download | php-git-751b0807b1b2c9b37366d368d941696ce760ad78.tar.gz | |
MFH: Fix bug #42850 array_walk_recursive() leaves references, refix bug #34982
Diffstat (limited to 'ext/standard/tests/array/bug42850.phpt')
| -rw-r--r-- | ext/standard/tests/array/bug42850.phpt | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/ext/standard/tests/array/bug42850.phpt b/ext/standard/tests/array/bug42850.phpt new file mode 100644 index 0000000000..737cd170d8 --- /dev/null +++ b/ext/standard/tests/array/bug42850.phpt @@ -0,0 +1,59 @@ +--TEST-- +Bug #42850 array_walk_recursive() leaves references, #34982 array_walk_recursive() modifies elements outside function scope +--FILE-- +<?php + +// Bug #42850 +$data = array ('key1' => 'val1', array('key2' => 'val2')); +function apply_dumb($item, $key) {}; +var_dump($data); +array_walk_recursive($data, 'apply_dumb'); +$data2 = $data; +$data2[0] = 'altered'; +var_dump($data); +var_dump($data2); + +// Bug #34982 +function myfunc($data) { + array_walk_recursive($data, 'apply_changed'); +} +function apply_changed(&$input, $key) { + $input = 'changed'; +} +myfunc($data); +var_dump($data); + +--EXPECT-- +array(2) { + ["key1"]=> + string(4) "val1" + [0]=> + array(1) { + ["key2"]=> + string(4) "val2" + } +} +array(2) { + ["key1"]=> + string(4) "val1" + [0]=> + array(1) { + ["key2"]=> + string(4) "val2" + } +} +array(2) { + ["key1"]=> + string(4) "val1" + [0]=> + string(7) "altered" +} +array(2) { + ["key1"]=> + string(4) "val1" + [0]=> + array(1) { + ["key2"]=> + string(4) "val2" + } +} |
