【话说 PHP7】短数组语法和 list

icy2003 程序 2020-09-25 11:50:03 1189 0条

[$a, $b] = [1, 2] 赋值写法的应用和扩展

86801-dgueyd7np7.png

问题来源

icy2003/php

由于我的疏忽,我并没有注意到这个新特性是在 php7.1 才有(图中已经说明了,php7.0 是不支持的)!

于是本站在调用 icy2003/phpHttp 类的方法时,报错了……( ‘-ωก̀ )

list 赋值

list 语言结构可以把数组中的值赋给一组变量,例如:

// $a 会被赋值为 1,$b 为 2
list($a, $b) = [1, 2];

不过有个缺点,当右边数组的元素个数比左边变量少时,会报错

短数组语法赋值

短数组语法可以简化 list 写法,注意这是 php7.1+ 的语法:

[$a, $b] = [1, 2];

即便是这样,list 有的缺点(右边比左边少时)依然存在

03403-tssl24f9s1h.png

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 报错的问题:

72115-7cm0w0jdz7i.png

标签: php

非特殊说明,本博所有文章均为博主原创。