php-src/tests/lang/foreachLoop.016.phpt
Peter Kokot 3f72c77ce4 Convert CRLF line endings to LF
This patch simplifies line endings tracked in the Git repository and
syncs them to all include the LF style instead of the CRLF files.

Newline characters:
- LF (\n) (*nix and Mac)
- CRLF (\r\n) (Windows)
- CR (\r) (old Mac, obsolete)

To see which line endings are in the index and in the working copy the
following command can be used:
`git ls-files --eol`

Git additionally provides `.gitattributes` file to specify if some files
need to have specific line endings on all platforms (either CRLF or LF).

Changed files shouldn't cause issues on modern Windows platforms because
also Git can do output conversion is core.autocrlf=true is set on
Windows and use CRLF newlines in all files in the working tree.

Unless CRLF files are tracked specifically, Git by default tracks all
files in the index using LF newlines.
2018-10-13 11:21:27 +02:00

207 lines
3.3 KiB
PHP

--TEST--
Ensure foreach splits the iterated entity from its cow reference set, for all sorts of iterated entities.
--FILE--
<?php
error_reporting(E_ALL & ~E_STRICT);
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";
$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";
$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";
$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";
$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";
$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]->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);
?>
--EXPECTF--
$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
Warning: Creating default object from empty value in %s on line %d
array(1) {
[0]=>
string(8) "original"
}
$a->b->c
Warning: Creating default object from empty value in %s on line %d
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
Warning: Creating default object from empty value in %s on line %d
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
Warning: Creating default object from empty value in %s on line %d
array(1) {
[0]=>
string(8) "original"
}