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
快速配置PHPMyAdmin方法
Jun 05 PHP
php&mysql 日期操作小记
Feb 27 PHP
php 下载保存文件保存到本地的两种实现方法
Aug 12 PHP
php输出1000以内质数(素数)示例
Feb 16 PHP
PHP错误和异长常处理总结
Mar 06 PHP
php微信支付之APP支付方法
Mar 04 PHP
PHP随机生成信用卡卡号的方法
Mar 23 PHP
PHP判断数组是否为空的常用方法(五种方法)
Feb 08 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
PHP安装memcache扩展的步骤讲解
Feb 14 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
May 29 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
自己动手做一个SQL解释器
2006/10/09 PHP
PHP使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
js 事件小结 表格区别
2007/08/13 Javascript
深入理解javascript作用域和闭包
2014/09/23 Javascript
javascript 闭包详解
2015/02/15 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
Vue-Router模式和钩子的用法
2018/02/28 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
Vue SPA 首屏优化方案
2021/02/26 Vue.js
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
Python 常用 PEP8 编码规范详解
2017/01/22 Python
python django 实现验证码的功能实例代码
2017/05/18 Python
神经网络理论基础及Python实现详解
2017/12/15 Python
Django实现表单验证
2018/09/08 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
python安装本地whl的实例步骤
2019/10/12 Python
python数据预处理 :数据共线性处理详解
2020/02/24 Python
在python中修改.properties文件的操作
2020/04/08 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
Python jieba库分词模式实例用法
2021/01/13 Python
网络教育毕业生自我鉴定
2013/10/10 职场文书
解除财产保全担保书
2014/05/20 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
小学四年级作文之写景
2019/08/23 职场文书
PostgreSQL基于pgrouting的路径规划处理方法
2022/04/18 PostgreSQL
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技