123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- --TEST--
- Ensure foreach splits the iterated entity from its cow reference set, for all sorts of iterated entities.
- --FILE--
- <?php
- echo "\n" . '$a' . "\n";
- $b = $a = array('original');
- foreach($a as $k=>&$v) {
- $v = 'changed';
- }
- var_dump($b);
- unset($a, $b);
- echo "\n" . '${\'a\'}' . "\n";
- $b = $a = array('original');
- foreach(${'a'} as $k=>&$v) {
- $v = 'changed';
- }
- var_dump($b);
- unset($a, $b);
- echo "\n" . '$$a' . "\n";
- $a = 'blah';
- $$a = array('original');
- $b = $$a;
- foreach($$a as $k=>&$v) {
- $v = 'changed';
- }
- var_dump($b);
- unset($a, $b);
- echo "\n" . '$a[0]' . "\n";
- $b = $a[0] = array('original');
- foreach($a[0] as $k=>&$v) {
- $v = 'changed';
- }
- var_dump($b);
- unset($a, $b);
- echo "\n" . '$a[0][0]' . "\n";
- $b = $a[0][0] = array('original');
- foreach($a[0][0] as $k=>&$v) {
- $v = 'changed';
- }
- var_dump($b);
- unset($a, $b);
- echo "\n" . '$a->b' . "\n";
- $a = new stdClass;
- $b = $a->b = array('original');
- foreach($a->b as $k=>&$v) {
- $v = 'changed';
- }
- var_dump($b);
- unset($a, $b);
- echo "\n" . '$a->b->c' . "\n";
- $a = new stdClass;
- $a->b = new stdClass;
- $b = $a->b->c = array('original');
- foreach($a->b as $k=>&$v) {
- $v = 'changed';
- }
- var_dump($b);
- unset($a, $b);
- echo "\n" . '$a->b[0]' . "\n";
- $a = new stdClass;
- $b = $a->b[0] = array('original');
- foreach($a->b[0] as $k=>&$v) {
- $v = 'changed';
- }
- var_dump($b);
- unset($a, $b);
- echo "\n" . '$a->b[0][0]' . "\n";
- $a = new stdClass;
- $b = $a->b[0][0] = array('original');
- foreach($a->b[0][0] as $k=>&$v) {
- $v = 'changed';
- }
- var_dump($b);
- unset($a, $b);
- echo "\n" . '$a->b[0]->c' . "\n";
- $a = new stdClass;
- $a->b[0] = new stdClass;
- $b = $a->b[0]->c = array('original');
- foreach($a->b[0]->c as $k=>&$v) {
- $v = 'changed';
- }
- var_dump($b);
- unset($a, $b);
- class C {
- public static $a;
- }
- echo "\n" . 'C::$a' . "\n";
- C::$a = array('original');
- $b = C::$a;
- foreach(C::$a as $k=>&$v) {
- $v = 'changed';
- }
- var_dump($b);
- unset($a, $b);
- echo "\n" . 'C::$a[0]' . "\n";
- C::$a[0] = array('original');
- $b = C::$a[0];
- foreach(C::$a[0] as $k=>&$v) {
- $v = 'changed';
- }
- var_dump($b);
- unset(C::$a[0], $b);
- echo "\n" . 'C::$a[0]->b' . "\n";
- C::$a[0] = new stdClass;
- C::$a[0]->b = array('original');
- $b = C::$a[0]->b;
- foreach(C::$a[0]->b as $k=>&$v) {
- $v = 'changed';
- }
- var_dump($b);
- unset(C::$a[0]->b, $b);
- ?>
- --EXPECT--
- $a
- array(1) {
- [0]=>
- string(8) "original"
- }
- ${'a'}
- array(1) {
- [0]=>
- string(8) "original"
- }
- $$a
- array(1) {
- [0]=>
- string(8) "original"
- }
- $a[0]
- array(1) {
- [0]=>
- string(8) "original"
- }
- $a[0][0]
- array(1) {
- [0]=>
- string(8) "original"
- }
- $a->b
- array(1) {
- [0]=>
- string(8) "original"
- }
- $a->b->c
- array(1) {
- [0]=>
- string(8) "original"
- }
- $a->b[0]
- array(1) {
- [0]=>
- string(8) "original"
- }
- $a->b[0][0]
- array(1) {
- [0]=>
- string(8) "original"
- }
- $a->b[0]->c
- array(1) {
- [0]=>
- string(8) "original"
- }
- C::$a
- array(1) {
- [0]=>
- string(8) "original"
- }
- C::$a[0]
- array(1) {
- [0]=>
- string(8) "original"
- }
- C::$a[0]->b
- array(1) {
- [0]=>
- string(8) "original"
- }
|