File:
[ELWIX - Embedded LightWeight unIX -] /
embedaddon /
php /
tests /
lang /
foreachLoop.002.phpt
Revision
1.1.1.1 (vendor branch):
download - view:
text,
annotated -
select for diffs -
revision graph
Tue Feb 21 23:48:06 2012 UTC (12 years, 6 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,
v5_3_10,
HEAD
php
1: --TEST--
2: Foreach loop tests - modifying the array during the loop.
3: --FILE--
4: <?php
5:
6: echo "\nDirectly changing array values.\n";
7: $a = array("original.1","original.2","original.3");
8: foreach ($a as $k=>$v) {
9: $a[$k]="changed.$k";
10: var_dump($v);
11: }
12: var_dump($a);
13:
14: echo "\nModifying the foreach \$value.\n";
15: $a = array("original.1","original.2","original.3");
16: foreach ($a as $k=>$v) {
17: $v="changed.$k";
18: }
19: var_dump($a);
20:
21:
22: echo "\nModifying the foreach &\$value.\n";
23: $a = array("original.1","original.2","original.3");
24: foreach ($a as $k=>&$v) {
25: $v="changed.$k";
26: }
27: var_dump($a);
28:
29: echo "\nPushing elements onto an unreferenced array.\n";
30: $a = array("original.1","original.2","original.3");
31: $counter=0;
32: foreach ($a as $v) {
33: array_push($a, "new.$counter");
34:
35: //avoid infinite loop if test is failing
36: if ($counter++>10) {
37: echo "Loop detected\n";
38: break;
39: }
40: }
41: var_dump($a);
42:
43: echo "\nPushing elements onto an unreferenced array, using &\$value.\n";
44: $a = array("original.1","original.2","original.3");
45: $counter=0;
46: foreach ($a as &$v) {
47: array_push($a, "new.$counter");
48:
49: //avoid infinite loop if test is failing
50: if ($counter++>10) {
51: echo "Loop detected\n";
52: break;
53: }
54: }
55: var_dump($a);
56:
57: echo "\nPopping elements off an unreferenced array.\n";
58: $a = array("original.1","original.2","original.3");
59: foreach ($a as $v) {
60: array_pop($a);
61: var_dump($v);
62: }
63: var_dump($a);
64:
65: echo "\nPopping elements off an unreferenced array, using &\$value.\n";
66: $a = array("original.1","original.2","original.3");
67: foreach ($a as &$v) {
68: array_pop($a);
69: var_dump($v);
70: }
71: var_dump($a);
72:
73: ?>
74: --EXPECT--
75:
76: Directly changing array values.
77: string(10) "original.1"
78: string(10) "original.2"
79: string(10) "original.3"
80: array(3) {
81: [0]=>
82: string(9) "changed.0"
83: [1]=>
84: string(9) "changed.1"
85: [2]=>
86: string(9) "changed.2"
87: }
88:
89: Modifying the foreach $value.
90: array(3) {
91: [0]=>
92: string(10) "original.1"
93: [1]=>
94: string(10) "original.2"
95: [2]=>
96: string(10) "original.3"
97: }
98:
99: Modifying the foreach &$value.
100: array(3) {
101: [0]=>
102: string(9) "changed.0"
103: [1]=>
104: string(9) "changed.1"
105: [2]=>
106: &string(9) "changed.2"
107: }
108:
109: Pushing elements onto an unreferenced array.
110: array(6) {
111: [0]=>
112: string(10) "original.1"
113: [1]=>
114: string(10) "original.2"
115: [2]=>
116: string(10) "original.3"
117: [3]=>
118: string(5) "new.0"
119: [4]=>
120: string(5) "new.1"
121: [5]=>
122: string(5) "new.2"
123: }
124:
125: Pushing elements onto an unreferenced array, using &$value.
126: Loop detected
127: array(15) {
128: [0]=>
129: string(10) "original.1"
130: [1]=>
131: string(10) "original.2"
132: [2]=>
133: string(10) "original.3"
134: [3]=>
135: string(5) "new.0"
136: [4]=>
137: string(5) "new.1"
138: [5]=>
139: string(5) "new.2"
140: [6]=>
141: string(5) "new.3"
142: [7]=>
143: string(5) "new.4"
144: [8]=>
145: string(5) "new.5"
146: [9]=>
147: string(5) "new.6"
148: [10]=>
149: string(5) "new.7"
150: [11]=>
151: &string(5) "new.8"
152: [12]=>
153: string(5) "new.9"
154: [13]=>
155: string(6) "new.10"
156: [14]=>
157: string(6) "new.11"
158: }
159:
160: Popping elements off an unreferenced array.
161: string(10) "original.1"
162: string(10) "original.2"
163: string(10) "original.3"
164: array(0) {
165: }
166:
167: Popping elements off an unreferenced array, using &$value.
168: string(10) "original.1"
169: string(10) "original.2"
170: array(1) {
171: [0]=>
172: string(10) "original.1"
173: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>