list()修改

2015-11-12 14:36:21
开源春哥
26027
最后编辑:开源春哥 于 2015-11-12 18:41:07
分享链接
摘要:PHP7里面对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.

参考资料:

https://wiki.php.net/rfc/abstract_syntax_tree#changes_to_list

https://wiki.php.net/rfc/fix_list_behavior_inconsistency

评论列表
孙大宝 2015-12-03 14:15:14
感谢分享
1/1
发表评论
评论通过审核后显示。