Annotation of embedaddon/php/tests/lang/foreachLoop.009.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Foreach loop tests - foreach operates on the original array if the array is referenced outside the loop.
3: --FILE--
4: <?php
5: // From php.net/foreach:
6: // "Unless the array is referenced, foreach operates on a copy of the specified array."
7:
8: echo "\nRemove elements from a referenced array during loop\n";
9: $refedArray=array("original.0", "original.1", "original.2");
10: $ref=&$refedArray;
11: foreach ($refedArray as $k=>$v1) {
12: array_pop($refedArray);
13: echo "key: $k; value: $v1\n";
14: }
15:
16: echo "\nRemove elements from a referenced array during loop, using &\$value\n";
17: $refedArray=array("original.0", "original.1", "original.2");
18: $ref=&$refedArray;
19: foreach ($refedArray as $k=>&$v2) {
20: array_pop($refedArray);
21: echo "key: $k; value: $v2\n";
22: }
23:
24: echo "\nAdd elements to a referenced array during loop\n";
25: $refedArray=array("original.0", "original.1", "original.2");
26: $ref=&$refedArray;
27: $count=0;
28: foreach ($refedArray as $k=>$v3) {
29: array_push($refedArray, "new.$k");
30: echo "key: $k; value: $v3\n";
31:
32: if ($count++>5) {
33: echo "Loop detected, as expected.\n";
34: break;
35: }
36: }
37:
38: echo "\nAdd elements to a referenced array during loop, using &\$value\n";
39: $refedArray=array("original.0", "original.1", "original.2");
40: $ref=&$refedArray;
41: $count=0;
42: foreach ($refedArray as $k=>&$v4) {
43: array_push($refedArray, "new.$k");
44: echo "key: $k; value: $v4\n";
45:
46: if ($count++>5) {
47: echo "Loop detected, as expected.\n";
48: break;
49: }
50: }
51:
52: ?>
53: --EXPECT--
54:
55: Remove elements from a referenced array during loop
56: key: 0; value: original.0
57: key: 1; value: original.1
58:
59: Remove elements from a referenced array during loop, using &$value
60: key: 0; value: original.0
61: key: 1; value: original.1
62:
63: Add elements to a referenced array during loop
64: key: 0; value: original.0
65: key: 1; value: original.1
66: key: 2; value: original.2
67: key: 3; value: new.0
68: key: 4; value: new.1
69: key: 5; value: new.2
70: key: 6; value: new.3
71: Loop detected, as expected.
72:
73: Add elements to a referenced array during loop, using &$value
74: key: 0; value: original.0
75: key: 1; value: original.1
76: key: 2; value: original.2
77: key: 3; value: new.0
78: key: 4; value: new.1
79: key: 5; value: new.2
80: key: 6; value: new.3
81: Loop detected, as expected.
82:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>