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中$_FILES的使用方法及注意事项说明
Feb 14 PHP
php将access数据库转换到mysql数据库的方法
Dec 24 PHP
PHP解压tar.gz格式文件的方法
Feb 14 PHP
PHP微信支付开发实例
Jun 22 PHP
php实现的debug log日志操作类实例
Jul 12 PHP
YII视图整合kindeditor扩展的方法
Jul 13 PHP
php PDO判断连接是否可用的实现方法
Apr 03 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
Aug 02 PHP
PHP中localeconv()函数的用法
Mar 26 PHP
PHP判断函数是否被定义的方法
Jun 21 PHP
在thinkphp5.0路径中实现去除index.php的方式
Oct 16 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 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
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
浅析使用Turck-mmcache编译来加速、优化PHP代码
2013/06/20 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
php版微信返回用户text输入的方法
2016/11/14 PHP
简单JS代码压缩器
2006/10/12 Javascript
JSON 学习之JSON in JavaScript详细使用说明
2010/02/23 Javascript
js中关于new Object时传参的一些细节分析
2011/03/13 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
javascript排序函数实现数字排序
2015/06/26 Javascript
javascript遇到html5的一些表单属性
2015/07/05 Javascript
jQuery定义插件的方法
2015/12/18 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
2016/06/12 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
微信小程序实现多行文字滚动
2020/11/18 Javascript
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python标准库defaultdict模块使用示例
2015/04/28 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
Python实现随机选择元素功能
2017/09/14 Python
详谈Python高阶函数与函数装饰器(推荐)
2017/09/30 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
jupyter notebook实现显示行号
2020/04/13 Python
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
波兰家居饰品和厨房配件网上商店:Maleomi
2020/12/15 全球购物
现金会计岗位职责
2013/12/05 职场文书
运动会广播稿100字
2014/01/11 职场文书
机关干部作风建设剖析材料
2014/10/23 职场文书
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python
tomcat默认最大连接数及相关调整方法
2022/05/06 Servers
Redis入门基础常用操作命令整理
2022/06/01 Redis