Annotation of embedaddon/php/tests/lang/foreachLoopObjects.006.phpt, revision 1.1.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>