Annotation of embedaddon/php/tests/lang/foreachLoop.009.phpt, revision 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>