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 相关文章推荐
桌面中心(三)修改数据库
Oct 09 PHP
PHP个人网站架设连环讲(四)
Oct 09 PHP
傻瓜化配置PHP环境――Appserv
Dec 13 PHP
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
May 03 PHP
PHP 开发环境配置(Zend Studio)
Apr 28 PHP
PHP动态分页函数,PHP开发分页必备啦
Nov 07 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
Jan 11 PHP
使用PHP实现Mysql读写分离
Jun 28 PHP
php中session退出登陆问题
Feb 27 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
Jun 19 PHP
一个比较不错的PHP日历类分享
Nov 18 PHP
Laravel中的chunk组块结果集处理与注意问题
Aug 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魔术引号所带来的安全问题分析
2014/07/15 PHP
thinkphp特殊标签用法概述
2014/11/24 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
PHP PDOStatement::bindColumn讲解
2019/01/30 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
学习面向对象之面向对象的基本概念:对象和其他基本要素
2010/11/30 Javascript
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
jquery 表格的增行删行实现思路
2013/03/21 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
js实现div闪烁原理及实现代码
2014/06/24 Javascript
javascript实现完美拖拽效果
2015/05/06 Javascript
JavaScript中的各种操作符使用总结
2016/05/26 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
JavaScript动态添加事件之事件委托
2016/07/12 Javascript
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
VUE 单页面使用 echart 窗口变化时的用法
2020/07/30 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
[35:39]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第二场 11.22
2020/11/24 DOTA
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
对numpy下的轴交换transpose和swapaxes的示例解读
2019/06/26 Python
django在开发中取消外键约束的实现
2020/05/20 Python
python中@property的作用和getter setter的解释
2020/12/22 Python
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
猫咪家具:CatsPlay
2018/11/03 全球购物
日本乐天官方海外转运服务:Rakuten Global Express
2018/11/30 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
介绍一下javax.servlet.Servlet接口及其主要方法
2015/11/30 面试题
自学考试自我鉴定范文
2013/09/26 职场文书
技术总监个人的自我评价范文
2013/12/18 职场文书
大学迎新生标语
2014/10/06 职场文书
催款函范文
2015/06/24 职场文书
mysql通过group by分组取最大时间对应数据的两种有效方法
2022/09/23 MySQL