Annotation of embedaddon/php/tests/lang/foreachLoopObjects.006.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: Foreach loop tests - substituting the entire iterated entity during the loop.
        !             3: --FILE--
        !             4: <?php
        !             5: 
        !             6: class C {
        !             7:        public $a = "Original a";
        !             8:        public $b = "Original b";
        !             9:        public $c = "Original c";
        !            10:        public $d = "Original d";
        !            11:        public $e = "Original e";
        !            12: }
        !            13: 
        !            14: echo "\nSubstituting the iterated object for a different object.\n";
        !            15: $obj = new C;
        !            16: $obj2 = new stdclass;
        !            17: $obj2->a = "new a";
        !            18: $obj2->b = "new b";
        !            19: $obj2->c = "new c";
        !            20: $obj2->d = "new d";
        !            21: $obj2->e = "new e";
        !            22: $obj2->f = "new f";
        !            23: $ref = &$obj;
        !            24: $count=0;
        !            25: foreach ($obj as $v) {
        !            26:        var_dump($v);
        !            27:        if ($v==$obj->b) {
        !            28:          $ref=$obj2;
        !            29:        }
        !            30:        if (++$count>10) {
        !            31:                echo "Loop detected.\n";
        !            32:                break;
        !            33:        }       
        !            34: }
        !            35: var_dump($obj);
        !            36: 
        !            37: echo "\nSubstituting the iterated object for an array.\n";
        !            38: $obj = new C;
        !            39: $a = array(1,2,3,4,5,6,7,8);
        !            40: $ref = &$obj;
        !            41: $count=0;
        !            42: foreach ($obj as $v) {
        !            43:        var_dump($v);
        !            44:        if ($v==="Original b") {
        !            45:          $ref=$a;
        !            46:        }
        !            47:        if (++$count>10) {
        !            48:                echo "Loop detected.\n";
        !            49:                break;
        !            50:        }       
        !            51: }
        !            52: var_dump($obj);
        !            53: 
        !            54: echo "\nSubstituting the iterated array for an object.\n";
        !            55: $a = array(1,2,3,4,5,6,7,8);
        !            56: $obj = new C;
        !            57: $ref = &$a;
        !            58: $count=0;
        !            59: foreach ($a as $v) {
        !            60:        var_dump($v);
        !            61:        if ($v===2) {
        !            62:          $ref=$obj;
        !            63:        }
        !            64:        if (++$count>10) {
        !            65:                echo "Loop detected.\n";
        !            66:                break;
        !            67:        }
        !            68: }
        !            69: var_dump($obj);
        !            70: 
        !            71: ?>
        !            72: --EXPECTF--
        !            73: 
        !            74: Substituting the iterated object for a different object.
        !            75: string(10) "Original a"
        !            76: string(10) "Original b"
        !            77: string(5) "new a"
        !            78: string(5) "new b"
        !            79: string(5) "new c"
        !            80: string(5) "new d"
        !            81: string(5) "new e"
        !            82: string(5) "new f"
        !            83: object(stdClass)#%d (6) {
        !            84:   ["a"]=>
        !            85:   string(5) "new a"
        !            86:   ["b"]=>
        !            87:   string(5) "new b"
        !            88:   ["c"]=>
        !            89:   string(5) "new c"
        !            90:   ["d"]=>
        !            91:   string(5) "new d"
        !            92:   ["e"]=>
        !            93:   string(5) "new e"
        !            94:   ["f"]=>
        !            95:   string(5) "new f"
        !            96: }
        !            97: 
        !            98: Substituting the iterated object for an array.
        !            99: string(10) "Original a"
        !           100: string(10) "Original b"
        !           101: int(1)
        !           102: int(2)
        !           103: int(3)
        !           104: int(4)
        !           105: int(5)
        !           106: int(6)
        !           107: int(7)
        !           108: int(8)
        !           109: array(8) {
        !           110:   [0]=>
        !           111:   int(1)
        !           112:   [1]=>
        !           113:   int(2)
        !           114:   [2]=>
        !           115:   int(3)
        !           116:   [3]=>
        !           117:   int(4)
        !           118:   [4]=>
        !           119:   int(5)
        !           120:   [5]=>
        !           121:   int(6)
        !           122:   [6]=>
        !           123:   int(7)
        !           124:   [7]=>
        !           125:   int(8)
        !           126: }
        !           127: 
        !           128: Substituting the iterated array for an object.
        !           129: int(1)
        !           130: int(2)
        !           131: string(10) "Original a"
        !           132: string(10) "Original b"
        !           133: string(10) "Original c"
        !           134: string(10) "Original d"
        !           135: string(10) "Original e"
        !           136: object(C)#%d (5) {
        !           137:   ["a"]=>
        !           138:   string(10) "Original a"
        !           139:   ["b"]=>
        !           140:   string(10) "Original b"
        !           141:   ["c"]=>
        !           142:   string(10) "Original c"
        !           143:   ["d"]=>
        !           144:   string(10) "Original d"
        !           145:   ["e"]=>
        !           146:   string(10) "Original e"
        !           147: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>