mirror of
https://github.com/php/php-src.git
synced 2024-12-15 04:45:03 +08:00
bdf1430eeb
By compiling the RHS $a as a non-CV fetch. This worked as expected in PHP 5, but broke in PHP 7 due to the different assign order. However the new implementation is more general, in that it allows $a on the LHS in any place, not just the first element.
57 lines
705 B
PHP
57 lines
705 B
PHP
--TEST--
|
|
Test variable occuring on both LHS and RHS of list()
|
|
--FILE--
|
|
<?php
|
|
|
|
$a = [1, 2, 3];
|
|
list($a, $b, $c) = $a;
|
|
var_dump($a, $b, $c);
|
|
|
|
$b = [1, 2, 3];
|
|
list($a, $b, $c) = $b;
|
|
var_dump($a, $b, $c);
|
|
|
|
$c = [1, 2, 3];
|
|
list($a, $b, $c) = $c;
|
|
var_dump($a, $b, $c);
|
|
|
|
$a = [[1, 2], 3];
|
|
list(list($a, $b), $c) = $a;
|
|
var_dump($a, $b, $c);
|
|
|
|
$b = [[1, 2], 3];
|
|
list(list($a, $b), $c) = $b;
|
|
var_dump($a, $b, $c);
|
|
|
|
$b = [1, [2, 3]];
|
|
list($a, list($b, $c)) = $b;
|
|
var_dump($a, $b, $c);
|
|
|
|
$c = [1, [2, 3]];
|
|
list($a, list($b, $c)) = $c;
|
|
var_dump($a, $b, $c);
|
|
|
|
?>
|
|
--EXPECT--
|
|
int(1)
|
|
int(2)
|
|
int(3)
|
|
int(1)
|
|
int(2)
|
|
int(3)
|
|
int(1)
|
|
int(2)
|
|
int(3)
|
|
int(1)
|
|
int(2)
|
|
int(3)
|
|
int(1)
|
|
int(2)
|
|
int(3)
|
|
int(1)
|
|
int(2)
|
|
int(3)
|
|
int(1)
|
|
int(2)
|
|
int(3)
|