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 header Content-Type类型小结
Jul 03 PHP
PHP Class&Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
PHP文件锁定写入实例解析
Jul 14 PHP
基于PHP实现的事件机制实例分析
Jun 18 PHP
php求一个网段开始与结束IP地址的方法
Jul 09 PHP
全面解读PHP的人气开发框架Laravel
Oct 15 PHP
PHP实现微信网页授权开发教程
Jan 19 PHP
php 运算符与表达式详细介绍
Nov 30 PHP
php 使用mpdf实现指定字段配置字体样式的方法
Jul 29 PHP
基于laravel Request的所有方法详解
Sep 29 PHP
yii框架数据库关联查询操作示例
Oct 14 PHP
Yii2框架中一些折磨人的坑
Dec 15 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
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
javascript 数据类型转换(parseInt,parseFloat)
2010/07/20 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
2014/06/20 Javascript
nodejs教程之异步I/O
2014/11/21 NodeJs
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
jQuery实现简洁的导航菜单效果
2015/11/23 Javascript
详解AngularJS中自定义过滤器
2015/12/28 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
2015/12/29 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
运用js教你轻松制作html音乐播放器
2020/04/17 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
Vue中 key keep-alive的实现原理
2018/09/18 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
vue iview多张图片大图预览、缩放翻转
2019/07/13 Javascript
微信小程序实现签字功能
2019/12/23 Javascript
Python获取当前函数名称方法实例分享
2018/01/18 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
浅谈tensorflow模型保存为pb的各种姿势
2020/05/25 Python
利用python清除移动硬盘中的临时文件
2020/10/28 Python
css3背景图片透明叠加属性cross-fade简介及用法实例
2013/01/08 HTML / CSS
贷款委托书范本
2014/04/08 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
群众路线教师自我剖析材料
2014/09/29 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
消防演习通知
2015/04/25 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书
先进个人事迹材料(2016推荐版)
2016/03/01 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python
Python写情书? 10行代码展示如何把情书写在她的照片里
2022/04/21 Python
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python
python manim实现排序算法动画示例
2022/08/14 Python