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创建PDF中文文档
Oct 09 PHP
多重?l件?合查?(二)
Oct 09 PHP
搜索和替换文件或目录的一个好类--很实用
Oct 09 PHP
php+AJAX传送中文会导致乱码的问题的解决方法
Sep 08 PHP
攻克CakePHP系列二 表单数据显示
Oct 22 PHP
php中使用临时表查询数据的一个例子
Feb 03 PHP
深入理解curl类,可用于模拟get,post和curl下载
Jun 08 PHP
php去除HTML标签实例
Nov 06 PHP
ThinkPHP模板自定义标签使用方法
Jun 26 PHP
php计算两个整数的最大公约数常用算法小结
Mar 05 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
Oct 31 PHP
PHP中$GLOBALS与global的区别详解
Mar 21 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一些十分严重的缺陷详解
2013/06/03 PHP
PHP SPL使用方法和他的威力
2013/11/12 PHP
linux实现php定时执行cron任务详解
2013/12/24 PHP
Javascript中的数学函数
2007/04/04 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
jQuery中before()方法用法实例
2014/12/25 Javascript
jQuery中:hidden选择器用法实例
2014/12/30 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
javascript闭包概念简单解析(推荐)
2016/06/03 Javascript
早该知道的7个JavaScript技巧
2016/06/21 Javascript
BootStrap tooltip提示框使用小结
2016/10/26 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
vue.js动态数据绑定学习笔记
2017/05/19 Javascript
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
跟老齐学Python之有点简约的元组
2014/09/24 Python
python3.6连接MySQL和表的创建与删除实例代码
2017/12/28 Python
Python读写及备份oracle数据库操作示例
2018/05/17 Python
python生成lmdb格式的文件实例
2018/11/08 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
用Python在Excel里画出蒙娜丽莎的方法示例
2020/04/28 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
python批量修改文件名的示例
2020/09/27 Python
python实现自动打卡的示例代码
2020/10/10 Python
护士的岗位职责
2013/12/04 职场文书
品牌宣传方案
2014/03/21 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技