File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / tests / lang / foreachLoop.016.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, 6 months ago) by misho
Branches: php, MAIN
CVS tags: v5_3_10, HEAD
php

    1: --TEST--
    2: Ensure foreach splits the iterated entity from its cow reference set, for all sorts of iterated entities.
    3: --FILE--
    4: <?php
    5:   error_reporting(E_ALL & ~E_STRICT);
    6: 
    7:   echo "\n" . '$a' . "\n";
    8:   $b = $a = array('original');
    9:   foreach($a as $k=>&$v) {
   10:   	 $v = 'changed';
   11:   }
   12:   var_dump($b);
   13:   unset($a, $b);
   14:   
   15:   echo "\n" . '${\'a\'}' . "\n";
   16:   $b = $a = array('original');
   17:   foreach(${'a'} as $k=>&$v) {
   18:   	 $v = 'changed';
   19:   }
   20:   var_dump($b);
   21:   unset($a, $b);
   22:   
   23:   echo "\n" . '$$a' . "\n";
   24:   $a = 'blah';
   25:   $$a = array('original');
   26:   $b = $$a;
   27:   foreach($$a as $k=>&$v) {
   28:   	 $v = 'changed';
   29:   }
   30:   var_dump($b);
   31:   unset($a, $b);
   32:   
   33:   echo "\n" . '$a[0]' . "\n";
   34:   $b = $a[0] = array('original');
   35:   foreach($a[0] as $k=>&$v) {
   36:   	 $v = 'changed';
   37:   }
   38:   var_dump($b);
   39:   unset($a, $b);
   40:   
   41:   echo "\n" . '$a[0][0]' . "\n";
   42:   $b = $a[0][0] = array('original');
   43:   foreach($a[0][0] as $k=>&$v) {
   44:   	 $v = 'changed';
   45:   }
   46:   var_dump($b);
   47:   unset($a, $b);
   48:   
   49:   echo "\n" . '$a->b' . "\n";
   50:   $b = $a->b = array('original');
   51:   foreach($a->b as $k=>&$v) {
   52:   	 $v = 'changed';
   53:   }
   54:   var_dump($b);
   55:   unset($a, $b);
   56:   
   57:   echo "\n" . '$a->b->c' . "\n";
   58:   $b = $a->b->c = array('original');
   59:   foreach($a->b as $k=>&$v) {
   60:   	 $v = 'changed';
   61:   }
   62:   var_dump($b);
   63:   unset($a, $b);
   64:   
   65:   echo "\n" . '$a->b[0]' . "\n";
   66:   $b = $a->b[0] = array('original');
   67:   foreach($a->b[0] as $k=>&$v) {
   68:   	 $v = 'changed';
   69:   }
   70:   var_dump($b);
   71:   unset($a, $b);
   72:   
   73:   echo "\n" . '$a->b[0][0]' . "\n";
   74:   $b = $a->b[0][0] = array('original');
   75:   foreach($a->b[0][0] as $k=>&$v) {
   76:   	 $v = 'changed';
   77:   }
   78:   var_dump($b);
   79:   unset($a, $b);
   80:   
   81:   echo "\n" . '$a->b[0]->c' . "\n";
   82:   $b = $a->b[0]->c = array('original');
   83:   foreach($a->b[0]->c as $k=>&$v) {
   84:   	 $v = 'changed';
   85:   }
   86:   var_dump($b);
   87:   unset($a, $b);
   88:   
   89:   class C {
   90:   	public static $a;
   91:   }
   92:   
   93:   echo "\n" . 'C::$a' . "\n";
   94:   C::$a = array('original');
   95:   $b = C::$a;
   96:   foreach(C::$a as $k=>&$v) {
   97:   	 $v = 'changed';
   98:   }
   99:   var_dump($b);
  100:   unset($a, $b);
  101:   
  102:   echo "\n" . 'C::$a[0]' . "\n";
  103:   C::$a[0] = array('original');
  104:   $b = C::$a[0];
  105:   foreach(C::$a[0] as $k=>&$v) {
  106:   	 $v = 'changed';
  107:   }
  108:   var_dump($b);
  109:   unset(C::$a[0], $b);
  110:   
  111:   echo "\n" . 'C::$a[0]->b' . "\n";
  112:   C::$a[0]->b = array('original');
  113:   $b = C::$a[0]->b;
  114:   foreach(C::$a[0]->b as $k=>&$v) {
  115:   	 $v = 'changed';
  116:   }
  117:   var_dump($b);
  118:   unset(C::$a[0]->b, $b);
  119: ?>
  120: --EXPECTF--
  121: 
  122: $a
  123: array(1) {
  124:   [0]=>
  125:   string(8) "original"
  126: }
  127: 
  128: ${'a'}
  129: array(1) {
  130:   [0]=>
  131:   string(8) "original"
  132: }
  133: 
  134: $$a
  135: array(1) {
  136:   [0]=>
  137:   string(8) "original"
  138: }
  139: 
  140: $a[0]
  141: array(1) {
  142:   [0]=>
  143:   string(8) "original"
  144: }
  145: 
  146: $a[0][0]
  147: array(1) {
  148:   [0]=>
  149:   string(8) "original"
  150: }
  151: 
  152: $a->b
  153: array(1) {
  154:   [0]=>
  155:   string(8) "original"
  156: }
  157: 
  158: $a->b->c
  159: array(1) {
  160:   [0]=>
  161:   string(8) "original"
  162: }
  163: 
  164: $a->b[0]
  165: array(1) {
  166:   [0]=>
  167:   string(8) "original"
  168: }
  169: 
  170: $a->b[0][0]
  171: array(1) {
  172:   [0]=>
  173:   string(8) "original"
  174: }
  175: 
  176: $a->b[0]->c
  177: array(1) {
  178:   [0]=>
  179:   string(8) "original"
  180: }
  181: 
  182: C::$a
  183: array(1) {
  184:   [0]=>
  185:   string(8) "original"
  186: }
  187: 
  188: C::$a[0]
  189: array(1) {
  190:   [0]=>
  191:   string(8) "original"
  192: }
  193: 
  194: C::$a[0]->b
  195: array(1) {
  196:   [0]=>
  197:   string(8) "original"
  198: }

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