Annotation of embedaddon/php/tests/lang/foreachLoop.016.phpt, revision 1.1.1.2

1.1       misho       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
1.1.1.2 ! misho     153: 
        !           154: Warning: Creating default object from empty value in %s on line %d
1.1       misho     155: array(1) {
                    156:   [0]=>
                    157:   string(8) "original"
                    158: }
                    159: 
                    160: $a->b->c
1.1.1.2 ! misho     161: 
        !           162: Warning: Creating default object from empty value in %s on line %d
1.1       misho     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
1.1.1.2 ! misho     181: 
        !           182: Warning: Creating default object from empty value in %s on line %d
1.1       misho     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
1.1.1.2 ! misho     201: 
        !           202: Warning: Creating default object from empty value in %s on line %d
1.1       misho     203: array(1) {
                    204:   [0]=>
                    205:   string(8) "original"
1.1.1.2 ! misho     206: }

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