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 for 循环语句使用方法详细说明
May 09 PHP
PHP中MVC模式的模板引擎开发经验分享
Mar 23 PHP
php强制下载类型的实现代码
Apr 21 PHP
php下利用curl判断远程文件是否存在的实现代码
Oct 08 PHP
深入php处理整数函数的详解
Jun 09 PHP
table标签的结构与合并单元格的实现方法
Jul 24 PHP
php获取301跳转URL简单实例
Dec 16 PHP
ThinkPHP分页类使用详解
Mar 05 PHP
php替换字符串中间字符为省略号的方法
May 04 PHP
详解如何在云服务器上部署Laravel
Jun 30 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
Mar 27 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
Apr 04 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完整的日历类(CLASS)
2006/11/27 PHP
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
2013/07/03 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
几款极品的javascript压缩混淆工具
2007/05/16 Javascript
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
2011/07/11 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
Javascript中常用的检测方法小结
2016/10/08 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
select标签设置默认选中的选项方法
2018/03/02 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
angular5 httpclient的示例实战
2018/03/12 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
python opencv 直方图反向投影的方法
2018/02/24 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
Python logging日志模块 配置文件方式
2020/07/12 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
英国办公用品商店:Office Outlet
2018/04/04 全球购物
实习自我鉴定模板
2013/09/28 职场文书
行政管理专业推荐信
2013/11/02 职场文书
新娘父亲婚礼致辞
2014/01/16 职场文书
商业房地产广告语
2014/03/13 职场文书
竞聘书怎么写,如何写?
2014/03/31 职场文书
驾驶员培训方案
2014/05/01 职场文书
交通文明倡议书
2014/05/16 职场文书
上下班时间调整通知
2015/04/23 职场文书
入党后的感想
2015/08/10 职场文书
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python