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>