File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / tests / lang / foreachLoop.009.phpt
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:48:06 2012 UTC (12 years, 4 months ago) by misho
Branches: php, MAIN
CVS tags: v5_4_3elwix, v5_4_29p0, v5_4_29, v5_4_20p0, v5_4_20, v5_4_17p0, v5_4_17, v5_3_10, HEAD
php

    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>