Return to foreachLoopObjects.006.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / tests / lang |
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: }