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 02 PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
Sep 15 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
Dec 25 PHP
PHP中使用数组实现堆栈数据结构的代码
Feb 05 PHP
php读取excel文件的简单实例
Aug 26 PHP
php网站地图生成类示例
Jan 13 PHP
php计算指定目录下文件占用空间的方法
Mar 13 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
Jul 29 PHP
php指定长度分割字符串str_split函数用法示例
Jan 30 PHP
YII框架页面缓存操作示例
Apr 29 PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 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字符串word末字符实现大小写互换的方法
2014/11/10 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
2017/08/07 PHP
javascript中创建对象的几种方法总结
2013/11/01 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
2016/11/18 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
2017/04/20 Javascript
微信小程序开发之toast提示插件使用示例
2017/06/08 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
详解vue添加删除元素的方法
2018/06/30 Javascript
小程序日历控件使用方法详解
2018/12/29 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
[03:48]大碗DOTA
2019/07/25 DOTA
python 中文字符串的处理实现代码
2009/10/25 Python
python 默认参数问题的陷阱
2016/02/29 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
python requests指定出口ip的例子
2019/07/25 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
Python如何生成xml文件
2020/06/04 Python
HTML5拖拉上传文件的简单实例
2017/01/11 HTML / CSS
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
自荐信的五个重要部分
2013/10/29 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
大学迎新标语
2014/06/26 职场文书
普通党员自我剖析材料
2014/10/07 职场文书
拾金不昧表扬稿
2015/01/16 职场文书
齐云山导游词
2015/02/06 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书
Win11怎么修改电源模式?Win11修改电源模式的方法
2022/04/05 数码科技