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的计数器程序
Oct 09 PHP
最简单的PHP程序--记数器
Oct 09 PHP
php 大数据量及海量数据处理算法总结
May 07 PHP
apache+php完美解决301重定向的两种方法
Jun 08 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
Oct 31 PHP
PHP使用Pthread实现的多线程操作实例
Nov 14 PHP
使用PHP如何实现高效安全的ftp服务器(一)
Dec 20 PHP
php判断邮箱地址是否存在的方法
Feb 13 PHP
py文件转exe时包含paramiko模块出错解决方法
Aug 12 PHP
浅谈PHP的反射API
Feb 26 PHP
laravel 解决Validator使用中出现的问题
Oct 25 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 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中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
js几个验证函数代码
2010/03/25 Javascript
jQuery技巧总结
2011/01/01 Javascript
编写自己的jQuery插件简单实现代码
2011/04/19 Javascript
jQuery判断iframe中元素是否存在的方法
2013/05/11 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
jQuery 中DOM 操作详解
2015/01/13 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
bootstrap table小案例
2016/10/21 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
JS限制条件补全问题实例分析
2016/12/16 Javascript
swiper自定义分页器使用方法详解
2020/09/14 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
2018/08/27 Javascript
create-react-app中添加less支持的实现
2019/11/15 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
javascript使用正则表达式实现注册登入校验
2020/09/23 Javascript
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
使用python Fabric动态修改远程机器hosts的方法
2018/10/26 Python
Python爬虫文件下载图文教程
2018/12/23 Python
Python 虚拟空间的使用代码详解
2019/06/10 Python
pycharm设置当前工作目录的操作(working directory)
2020/02/14 Python
python 数据库查询返回list或tuple实例
2020/05/15 Python
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
韩语专业本科生求职信
2013/10/01 职场文书
学习两会精神心得范文
2014/03/17 职场文书
人力资源管理毕业求职信
2014/08/05 职场文书
七一建党节演讲稿
2014/09/11 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript