123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- --TEST--
- Bug #42654 (RecursiveIteratorIterator modifies only part of leaves)
- --FILE--
- <?php
- $data = array(1 => 'val1',
- array(2 => 'val2',
- array(3 => 'val3'),
- ),
- 4 => 'val4'
- );
- $iterator = new RecursiveIteratorIterator(new
- RecursiveArrayIterator($data));
- foreach($iterator as $foo) {
- $key = $iterator->key();
- echo "update $key\n";
- var_dump($iterator->getInnerIterator());
- $iterator->offsetSet($key, 'alter');
- var_dump($iterator->getInnerIterator());
- }
- $copy = $iterator->getArrayCopy();
- var_dump($copy);
- ?>
- --EXPECTF--
- update 1
- object(RecursiveArrayIterator)#%d (1) {
- ["storage":"ArrayIterator":private]=>
- array(3) {
- [1]=>
- string(4) "val1"
- [2]=>
- array(2) {
- [2]=>
- string(4) "val2"
- [3]=>
- array(1) {
- [3]=>
- string(4) "val3"
- }
- }
- [4]=>
- string(4) "val4"
- }
- }
- object(RecursiveArrayIterator)#%d (1) {
- ["storage":"ArrayIterator":private]=>
- array(3) {
- [1]=>
- string(5) "alter"
- [2]=>
- array(2) {
- [2]=>
- string(4) "val2"
- [3]=>
- array(1) {
- [3]=>
- string(4) "val3"
- }
- }
- [4]=>
- string(4) "val4"
- }
- }
- update 2
- object(RecursiveArrayIterator)#%d (1) {
- ["storage":"ArrayIterator":private]=>
- array(2) {
- [2]=>
- string(4) "val2"
- [3]=>
- array(1) {
- [3]=>
- string(4) "val3"
- }
- }
- }
- object(RecursiveArrayIterator)#%d (1) {
- ["storage":"ArrayIterator":private]=>
- array(2) {
- [2]=>
- string(5) "alter"
- [3]=>
- array(1) {
- [3]=>
- string(4) "val3"
- }
- }
- }
- update 3
- object(RecursiveArrayIterator)#%d (1) {
- ["storage":"ArrayIterator":private]=>
- array(1) {
- [3]=>
- string(4) "val3"
- }
- }
- object(RecursiveArrayIterator)#%d (1) {
- ["storage":"ArrayIterator":private]=>
- array(1) {
- [3]=>
- string(5) "alter"
- }
- }
- update 4
- object(RecursiveArrayIterator)#%d (1) {
- ["storage":"ArrayIterator":private]=>
- array(3) {
- [1]=>
- string(5) "alter"
- [2]=>
- array(2) {
- [2]=>
- string(4) "val2"
- [3]=>
- array(1) {
- [3]=>
- string(4) "val3"
- }
- }
- [4]=>
- string(4) "val4"
- }
- }
- object(RecursiveArrayIterator)#%d (1) {
- ["storage":"ArrayIterator":private]=>
- array(3) {
- [1]=>
- string(5) "alter"
- [2]=>
- array(2) {
- [2]=>
- string(4) "val2"
- [3]=>
- array(1) {
- [3]=>
- string(4) "val3"
- }
- }
- [4]=>
- string(5) "alter"
- }
- }
- array(3) {
- [1]=>
- string(5) "alter"
- [2]=>
- array(2) {
- [2]=>
- string(4) "val2"
- [3]=>
- array(1) {
- [3]=>
- string(4) "val3"
- }
- }
- [4]=>
- string(5) "alter"
- }
|