Annotation of embedaddon/php/ext/spl/tests/bug42654.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Bug #42654 (RecursiveIteratorIterator modifies only part of leaves)
3: --FILE--
4: <?php
5: $data = array(1 => 'val1',
6: array(2 => 'val2',
7: array(3 => 'val3'),
8: ),
9: 4 => 'val4'
10: );
11:
12: $iterator = new RecursiveIteratorIterator(new
13: RecursiveArrayIterator($data));
14: foreach($iterator as $foo) {
15: $key = $iterator->key();
16: echo "update $key\n";
17: var_dump($iterator->getInnerIterator());
18: $iterator->offsetSet($key, 'alter');
19: var_dump($iterator->getInnerIterator());
20: }
21: $copy = $iterator->getArrayCopy();
22: var_dump($copy);
23: ?>
24: --EXPECTF--
25: update 1
26: object(RecursiveArrayIterator)#%d (1) {
27: ["storage":"ArrayIterator":private]=>
28: array(3) {
29: [1]=>
30: string(4) "val1"
31: [2]=>
32: array(2) {
33: [2]=>
34: string(4) "val2"
35: [3]=>
36: array(1) {
37: [3]=>
38: string(4) "val3"
39: }
40: }
41: [4]=>
42: string(4) "val4"
43: }
44: }
45: object(RecursiveArrayIterator)#%d (1) {
46: ["storage":"ArrayIterator":private]=>
47: array(3) {
48: [1]=>
49: string(5) "alter"
50: [2]=>
51: array(2) {
52: [2]=>
53: string(4) "val2"
54: [3]=>
55: array(1) {
56: [3]=>
57: string(4) "val3"
58: }
59: }
60: [4]=>
61: string(4) "val4"
62: }
63: }
64: update 2
65: object(RecursiveArrayIterator)#%d (1) {
66: ["storage":"ArrayIterator":private]=>
67: array(2) {
68: [2]=>
69: string(4) "val2"
70: [3]=>
71: array(1) {
72: [3]=>
73: string(4) "val3"
74: }
75: }
76: }
77: object(RecursiveArrayIterator)#%d (1) {
78: ["storage":"ArrayIterator":private]=>
79: array(2) {
80: [2]=>
81: string(5) "alter"
82: [3]=>
83: array(1) {
84: [3]=>
85: string(4) "val3"
86: }
87: }
88: }
89: update 3
90: object(RecursiveArrayIterator)#%d (1) {
91: ["storage":"ArrayIterator":private]=>
92: array(1) {
93: [3]=>
94: string(4) "val3"
95: }
96: }
97: object(RecursiveArrayIterator)#%d (1) {
98: ["storage":"ArrayIterator":private]=>
99: array(1) {
100: [3]=>
101: string(5) "alter"
102: }
103: }
104: update 4
105: object(RecursiveArrayIterator)#%d (1) {
106: ["storage":"ArrayIterator":private]=>
107: array(3) {
108: [1]=>
109: string(5) "alter"
110: [2]=>
111: array(2) {
112: [2]=>
113: string(4) "val2"
114: [3]=>
115: array(1) {
116: [3]=>
117: string(4) "val3"
118: }
119: }
120: [4]=>
121: string(4) "val4"
122: }
123: }
124: object(RecursiveArrayIterator)#%d (1) {
125: ["storage":"ArrayIterator":private]=>
126: array(3) {
127: [1]=>
128: string(5) "alter"
129: [2]=>
130: array(2) {
131: [2]=>
132: string(4) "val2"
133: [3]=>
134: array(1) {
135: [3]=>
136: string(4) "val3"
137: }
138: }
139: [4]=>
140: string(5) "alter"
141: }
142: }
143: array(3) {
144: [1]=>
145: string(5) "alter"
146: [2]=>
147: array(2) {
148: [2]=>
149: string(4) "val2"
150: [3]=>
151: array(1) {
152: [3]=>
153: string(4) "val3"
154: }
155: }
156: [4]=>
157: string(5) "alter"
158: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>