[$a, $b] = [1, 2]
赋值写法的应用和扩展
问题来源
由于我的疏忽,我并没有注意到这个新特性是在 php7.1 才有(图中已经说明了,php7.0 是不支持的)!
于是本站在调用 icy2003/php
的 Http
类的方法时,报错了……( ‘-ωก̀ )
list 赋值
list
语言结构可以把数组中的值赋给一组变量,例如:
// $a 会被赋值为 1,$b 为 2
list($a, $b) = [1, 2];
不过有个缺点,当右边数组的元素个数比左边变量少时,会报错
短数组语法赋值
短数组语法可以简化 list
写法,注意这是 php7.1+ 的语法:
[$a, $b] = [1, 2];
即便是这样,list
有的缺点(右边比左边少时)依然存在
Arrays::lists 赋值
返回指定长度的数组,通常用于给
list
或短数组语法赋值
缺点:在已知数组元素个数的情况下使用list
或短数组语法的效率显然更高!
引用:use icy2003\php\ihelpers\Arrays;
定义:public static function lists($array, $count = null, $callback = null)
参数:
$array
用来赋值给别人的数组,个数不够时,变量会被赋值为 null$count
指定个数,如果为 null,则表示指定为$array
真实元素个数$callback
可以在赋值前先处理数组后再返回
举个例子,我想让 [1, 2, 3]
的元素的值 +1
,并且赋值给 $a, $b, $c
三个变量:
list($a, $b, $c) = Arrays::lists([1, 2, 3], null, function ($value) {
return $value++;
});
用 Arrays::lists
来解决 list
报错的问题: