list()修改


一、list()不再按照相反的順序賦值

list($array[], $array[], $array[]) = [1, 2, 3];
var_dump($array);

上面的程式碼會回傳一個陣列:$array == [1, 2, 3] 而不是之前的[3, 2, 1]

注意:只是賦值的順序發生變化,賦的值還是跟原來一樣的。

 list($a, $b, $c) = [1, 2, 3];
 // $a = 1; $b = 2; $c = 3;

和原來的行為還是一樣的。

二、空的list()賦值不再允許。

list() = $a;
list(,,) = $a;
list($x, list(), $y) = $a;

上面的這些程式碼運行起來會報錯了。

三、list()不在支援字串分割功能    

$string = "xy";
list($x, $y) = $string;
這段程式碼最終的結果是:$x == null and $y == null (不會有提示)

PHP5運作的結果是: $x == "x" and $y == "y". 

四、除此之外,list()現在也適用於陣列物件:

list($a, $b) = (object) new ArrayObject([0, 1]);
PHP7結果:$a == 0 and $b == 1.

PHP5結果:$a == null and $b == null.