File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / tests / lang / foreachLoop.016.phpt
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 12:34:34 2012 UTC (12 years, 1 month 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, HEAD
php 5.4.3+patches

    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: 
  154: Warning: Creating default object from empty value in %s on line %d
  155: array(1) {
  156:   [0]=>
  157:   string(8) "original"
  158: }
  159: 
  160: $a->b->c
  161: 
  162: Warning: Creating default object from empty value in %s on line %d
  163: array(1) {
  164:   [0]=>
  165:   string(8) "original"
  166: }
  167: 
  168: $a->b[0]
  169: array(1) {
  170:   [0]=>
  171:   string(8) "original"
  172: }
  173: 
  174: $a->b[0][0]
  175: array(1) {
  176:   [0]=>
  177:   string(8) "original"
  178: }
  179: 
  180: $a->b[0]->c
  181: 
  182: Warning: Creating default object from empty value in %s on line %d
  183: array(1) {
  184:   [0]=>
  185:   string(8) "original"
  186: }
  187: 
  188: C::$a
  189: array(1) {
  190:   [0]=>
  191:   string(8) "original"
  192: }
  193: 
  194: C::$a[0]
  195: array(1) {
  196:   [0]=>
  197:   string(8) "original"
  198: }
  199: 
  200: C::$a[0]->b
  201: 
  202: Warning: Creating default object from empty value in %s on line %d
  203: array(1) {
  204:   [0]=>
  205:   string(8) "original"
  206: }

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