summaryrefslogtreecommitdiff
path: root/tests/lang/foreachLoopObjects.006.phpt
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2013-03-14 05:42:27 +0000
committer <>2013-04-03 16:25:08 +0000
commitc4dd7a1a684490673e25aaf4fabec5df138854c4 (patch)
tree4d57c44caae4480efff02b90b9be86f44bf25409 /tests/lang/foreachLoopObjects.006.phpt
downloadphp2-master.tar.gz
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'tests/lang/foreachLoopObjects.006.phpt')
-rw-r--r--tests/lang/foreachLoopObjects.006.phpt147
1 files changed, 147 insertions, 0 deletions
diff --git a/tests/lang/foreachLoopObjects.006.phpt b/tests/lang/foreachLoopObjects.006.phpt
new file mode 100644
index 0000000..8218b44
--- /dev/null
+++ b/tests/lang/foreachLoopObjects.006.phpt
@@ -0,0 +1,147 @@
+--TEST--
+Foreach loop tests - substituting the entire iterated entity during the loop.
+--FILE--
+<?php
+
+class C {
+ public $a = "Original a";
+ public $b = "Original b";
+ public $c = "Original c";
+ public $d = "Original d";
+ public $e = "Original e";
+}
+
+echo "\nSubstituting the iterated object for a different object.\n";
+$obj = new C;
+$obj2 = new stdclass;
+$obj2->a = "new a";
+$obj2->b = "new b";
+$obj2->c = "new c";
+$obj2->d = "new d";
+$obj2->e = "new e";
+$obj2->f = "new f";
+$ref = &$obj;
+$count=0;
+foreach ($obj as $v) {
+ var_dump($v);
+ if ($v==$obj->b) {
+ $ref=$obj2;
+ }
+ if (++$count>10) {
+ echo "Loop detected.\n";
+ break;
+ }
+}
+var_dump($obj);
+
+echo "\nSubstituting the iterated object for an array.\n";
+$obj = new C;
+$a = array(1,2,3,4,5,6,7,8);
+$ref = &$obj;
+$count=0;
+foreach ($obj as $v) {
+ var_dump($v);
+ if ($v==="Original b") {
+ $ref=$a;
+ }
+ if (++$count>10) {
+ echo "Loop detected.\n";
+ break;
+ }
+}
+var_dump($obj);
+
+echo "\nSubstituting the iterated array for an object.\n";
+$a = array(1,2,3,4,5,6,7,8);
+$obj = new C;
+$ref = &$a;
+$count=0;
+foreach ($a as $v) {
+ var_dump($v);
+ if ($v===2) {
+ $ref=$obj;
+ }
+ if (++$count>10) {
+ echo "Loop detected.\n";
+ break;
+ }
+}
+var_dump($obj);
+
+?>
+--EXPECTF--
+
+Substituting the iterated object for a different object.
+string(10) "Original a"
+string(10) "Original b"
+string(5) "new a"
+string(5) "new b"
+string(5) "new c"
+string(5) "new d"
+string(5) "new e"
+string(5) "new f"
+object(stdClass)#%d (6) {
+ ["a"]=>
+ string(5) "new a"
+ ["b"]=>
+ string(5) "new b"
+ ["c"]=>
+ string(5) "new c"
+ ["d"]=>
+ string(5) "new d"
+ ["e"]=>
+ string(5) "new e"
+ ["f"]=>
+ string(5) "new f"
+}
+
+Substituting the iterated object for an array.
+string(10) "Original a"
+string(10) "Original b"
+int(1)
+int(2)
+int(3)
+int(4)
+int(5)
+int(6)
+int(7)
+int(8)
+array(8) {
+ [0]=>
+ int(1)
+ [1]=>
+ int(2)
+ [2]=>
+ int(3)
+ [3]=>
+ int(4)
+ [4]=>
+ int(5)
+ [5]=>
+ int(6)
+ [6]=>
+ int(7)
+ [7]=>
+ int(8)
+}
+
+Substituting the iterated array for an object.
+int(1)
+int(2)
+string(10) "Original a"
+string(10) "Original b"
+string(10) "Original c"
+string(10) "Original d"
+string(10) "Original e"
+object(C)#%d (5) {
+ ["a"]=>
+ string(10) "Original a"
+ ["b"]=>
+ string(10) "Original b"
+ ["c"]=>
+ string(10) "Original c"
+ ["d"]=>
+ string(10) "Original d"
+ ["e"]=>
+ string(10) "Original e"
+}