File:
[ELWIX - Embedded LightWeight unIX -] /
embedaddon /
php /
tests /
lang /
foreachLoop.016.phpt
Revision
1.1.1.2 (vendor branch):
download - view:
text,
annotated -
select for diffs -
revision graph
Tue May 29 12:34:34 2012 UTC (12 years, 3 months ago) by
misho
Branches:
php,
MAIN
CVS tags:
v5_4_3elwix,
v5_4_29p0,
v5_4_29,
v5_4_20p0,
v5_4_20,
v5_4_17p0,
v5_4_17,
HEAD
php 5.4.3+patches
1: --TEST--
2: Ensure foreach splits the iterated entity from its cow reference set, for all sorts of iterated entities.
3: --FILE--
4: <?php
5: error_reporting(E_ALL & ~E_STRICT);
6:
7: echo "\n" . '$a' . "\n";
8: $b = $a = array('original');
9: foreach($a as $k=>&$v) {
10: $v = 'changed';
11: }
12: var_dump($b);
13: unset($a, $b);
14:
15: echo "\n" . '${\'a\'}' . "\n";
16: $b = $a = array('original');
17: foreach(${'a'} as $k=>&$v) {
18: $v = 'changed';
19: }
20: var_dump($b);
21: unset($a, $b);
22:
23: echo "\n" . '$$a' . "\n";
24: $a = 'blah';
25: $$a = array('original');
26: $b = $$a;
27: foreach($$a as $k=>&$v) {
28: $v = 'changed';
29: }
30: var_dump($b);
31: unset($a, $b);
32:
33: echo "\n" . '$a[0]' . "\n";
34: $b = $a[0] = array('original');
35: foreach($a[0] as $k=>&$v) {
36: $v = 'changed';
37: }
38: var_dump($b);
39: unset($a, $b);
40:
41: echo "\n" . '$a[0][0]' . "\n";
42: $b = $a[0][0] = array('original');
43: foreach($a[0][0] as $k=>&$v) {
44: $v = 'changed';
45: }
46: var_dump($b);
47: unset($a, $b);
48:
49: echo "\n" . '$a->b' . "\n";
50: $b = $a->b = array('original');
51: foreach($a->b as $k=>&$v) {
52: $v = 'changed';
53: }
54: var_dump($b);
55: unset($a, $b);
56:
57: echo "\n" . '$a->b->c' . "\n";
58: $b = $a->b->c = array('original');
59: foreach($a->b as $k=>&$v) {
60: $v = 'changed';
61: }
62: var_dump($b);
63: unset($a, $b);
64:
65: echo "\n" . '$a->b[0]' . "\n";
66: $b = $a->b[0] = array('original');
67: foreach($a->b[0] as $k=>&$v) {
68: $v = 'changed';
69: }
70: var_dump($b);
71: unset($a, $b);
72:
73: echo "\n" . '$a->b[0][0]' . "\n";
74: $b = $a->b[0][0] = array('original');
75: foreach($a->b[0][0] as $k=>&$v) {
76: $v = 'changed';
77: }
78: var_dump($b);
79: unset($a, $b);
80:
81: echo "\n" . '$a->b[0]->c' . "\n";
82: $b = $a->b[0]->c = array('original');
83: foreach($a->b[0]->c as $k=>&$v) {
84: $v = 'changed';
85: }
86: var_dump($b);
87: unset($a, $b);
88:
89: class C {
90: public static $a;
91: }
92:
93: echo "\n" . 'C::$a' . "\n";
94: C::$a = array('original');
95: $b = C::$a;
96: foreach(C::$a as $k=>&$v) {
97: $v = 'changed';
98: }
99: var_dump($b);
100: unset($a, $b);
101:
102: echo "\n" . 'C::$a[0]' . "\n";
103: C::$a[0] = array('original');
104: $b = C::$a[0];
105: foreach(C::$a[0] as $k=>&$v) {
106: $v = 'changed';
107: }
108: var_dump($b);
109: unset(C::$a[0], $b);
110:
111: echo "\n" . 'C::$a[0]->b' . "\n";
112: C::$a[0]->b = array('original');
113: $b = C::$a[0]->b;
114: foreach(C::$a[0]->b as $k=>&$v) {
115: $v = 'changed';
116: }
117: var_dump($b);
118: unset(C::$a[0]->b, $b);
119: ?>
120: --EXPECTF--
121:
122: $a
123: array(1) {
124: [0]=>
125: string(8) "original"
126: }
127:
128: ${'a'}
129: array(1) {
130: [0]=>
131: string(8) "original"
132: }
133:
134: $$a
135: array(1) {
136: [0]=>
137: string(8) "original"
138: }
139:
140: $a[0]
141: array(1) {
142: [0]=>
143: string(8) "original"
144: }
145:
146: $a[0][0]
147: array(1) {
148: [0]=>
149: string(8) "original"
150: }
151:
152: $a->b
153:
154: Warning: Creating default object from empty value in %s on line %d
155: array(1) {
156: [0]=>
157: string(8) "original"
158: }
159:
160: $a->b->c
161:
162: Warning: Creating default object from empty value in %s on line %d
163: array(1) {
164: [0]=>
165: string(8) "original"
166: }
167:
168: $a->b[0]
169: array(1) {
170: [0]=>
171: string(8) "original"
172: }
173:
174: $a->b[0][0]
175: array(1) {
176: [0]=>
177: string(8) "original"
178: }
179:
180: $a->b[0]->c
181:
182: Warning: Creating default object from empty value in %s on line %d
183: array(1) {
184: [0]=>
185: string(8) "original"
186: }
187:
188: C::$a
189: array(1) {
190: [0]=>
191: string(8) "original"
192: }
193:
194: C::$a[0]
195: array(1) {
196: [0]=>
197: string(8) "original"
198: }
199:
200: C::$a[0]->b
201:
202: Warning: Creating default object from empty value in %s on line %d
203: array(1) {
204: [0]=>
205: string(8) "original"
206: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>