PHP7.1方括号数组符号多值复制及指定键值赋值用法分析


Posted in PHP onSeptember 26, 2016

本文实例讲述了PHP7.1方括号数组符号多值复制及指定键值赋值用法。分享给大家供大家参考,具体如下:

PHPer 们可能都知道 list 的用法,简单来说就是可以在一个表达试里通过数组对多个变量赋值:

$values = array('value1', 'value2');
$list($v1, $v2) = $values;

感觉是不是很方便呢?在 PHP 7.1 中,还能更省事儿:

[$v1, $v2] = ['foo', 'bar'];

这还不是最给力的,在 PHP 7.1 里我们还可以指定键值来赋值,从而不用关心数组元素的顺序:

list('v1' => $value1, 'v2' => $value2) = array('v1' => 'foo', 'v2' => 'bar', ...);
// or
['v1' => $value1, 'v2' => $value2] = ['v1' => 'foo', 'v2' => 'bar', ...];

其实在 PHP 5 的年代,list 就有一个很不错的用法可能大家都不熟悉:

$arr = [
  ['x', 'y'],
  ['x1', 'y2'],
];
foreach ($arr as list($x, $y)) {
  echo $x, ' ', $y, PHP_EOL;
}

到了 PHP 7.1,因为可以指定键值赋值,这种用法将更加的灵活,估计也更加常用:

$arr = [
  ['x' => 1, 'y' => '2'],
  ['x' => 2, 'y' => '4'],
];
foreach ($arr as ['x' => $x, 'y' => $y)) {
  echo $x, ' ', $y, PHP_EOL;
}

再看看一个官网的例子,是不是感觉好像春风拂面一样清爽:

class ElePHPant
{
  private $name, $colour, $age, $cuteness;
  public function __construct(array $attributes) {
    // $this->name = $attributes['name']; // 以前
    // 现在
    [
      "name" => $this->name,
      "colour" => $this->colour,
      "age" => $this->age,
      "cuteness" => $this->cuteness
    ] = $attributes;
  }
  // ...
}

值得一提的是:此种赋值方式,是可以嵌套使用的!

[[$a, $b], [$c, $d]] = [[1, 2], [3, 4]];

最后,在 PHP 7.1 的提案里有一个展望,也非常值得期待:

class ElePHPant
{
  private $name, $colour, $age, $cuteness;
  public function __construct(["name" => string $name, "colour" => \Colour $colour, "age" => int $age, "cuteness" => float $cuteness]) {
    $this->name = $name;
    $this->colour = $colour;
    $this->age = $age;
    $this->cuteness = $cuteness;
  }
  // ...
}

如果 PHP 推出此语法,那么参数列表将不再关心参数顺序,PHP 的小伙伴将不再羡慕 Ruby 的小伙伴啦!

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
聊天室php&mysql(六)
Oct 09 PHP
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
Dec 06 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
Jan 12 PHP
fleaphp rolesNameField bug解决方法
Apr 23 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
Apr 23 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
Jun 21 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
Apr 27 PHP
PHP中预定义的6种接口介绍
May 12 PHP
PHP中的数组处理函数实例总结
Jan 09 PHP
php微信公众平台配置接口开发程序
Sep 22 PHP
php封装的mongodb操作类代码
Aug 06 PHP
利用ajax+php实现商品价格计算
Mar 31 PHP
PHP7.1新功能之Nullable Type用法分析
Sep 26 #PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
Sep 26 #PHP
php版交通银行网银支付接口开发入门教程
Sep 26 #PHP
php版微信公众平台实现预约提交后发送email的方法
Sep 26 #PHP
php版微信公众平台入门教程之开发者认证的方法
Sep 26 #PHP
php is_executable判断给定文件名是否可执行实例
Sep 26 #PHP
PHP弱类型的安全问题详细总结
Sep 25 #PHP
You might like
PHP5 面向对象程序设计
2008/02/13 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
JQuery动画和停止动画实例代码
2013/03/01 Javascript
Node.js编码规范
2014/07/14 Javascript
jquery操作复选框checkbox的方法汇总
2015/02/05 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
Nodejs+express+ejs简单使用实例代码
2017/09/18 NodeJs
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
详解Angular cli配置过程记录
2019/11/07 Javascript
jQuery实现手风琴效果(蒙版)
2020/01/11 jQuery
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
Python入门篇之条件、循环
2014/10/17 Python
Python可变参数用法实例分析
2017/04/02 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
Django项目使用ckeditor详解(不使用admin)
2019/12/17 Python
以实惠的价格提供高品质的时尚:Newchic
2018/01/18 全球购物
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
餐饮业的创业计划书范文
2013/12/26 职场文书
教师节商场活动方案
2014/02/13 职场文书
护士求职信范文
2014/05/24 职场文书
中小学校园安全广播稿
2014/09/29 职场文书
科学育儿宣传标语
2014/10/08 职场文书
经理岗位职责范本
2015/04/15 职场文书
2016年社区国庆节活动总结
2016/04/01 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书