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 相关文章推荐
source.php查看源文件
Dec 09 PHP
php模板之Phpbean的目录结构
Jan 10 PHP
PHP警告Cannot use a scalar value as an array的解决方法
Jan 11 PHP
php daddslashes()和 saddslashes()有哪些区别分析
Oct 26 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
php实现数组筛选奇数和偶数示例
Apr 11 PHP
浅谈PHP中静态方法和非静态方法的相互调用
Oct 04 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
Jun 06 PHP
php中文乱码问题的终极解决方案汇总
Aug 01 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
Apr 21 PHP
PHP封装curl的调用接口及常用函数详解
May 31 PHP
laravel异步监控定时调度器实例详解
Jun 21 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 中的类
2006/10/09 PHP
php zend 相对路径问题
2009/01/12 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
2019/04/02 PHP
Prototype1.5 rc2版指南最后一篇之Position
2007/01/10 Javascript
JavaScript继承方式实例
2010/10/29 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
2013/07/10 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
js控制按钮,防止频繁点击响应的实例
2017/02/15 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
微信小程序左右滑动切换页面详解及实例代码
2017/02/28 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
JS实现百度搜索框关键字推荐
2020/02/17 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
Python实现的爬取百度贴吧图片功能完整示例
2019/05/10 Python
Django用户认证系统 组与权限解析
2019/08/02 Python
Python大数据之从网页上爬取数据的方法详解
2019/11/16 Python
Python基于os.environ从windows获取环境变量
2020/06/09 Python
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
德国综合购物网站:OTTO
2018/11/13 全球购物
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
公务员培训自我鉴定
2013/09/19 职场文书
《伯牙绝弦》教学反思
2014/03/02 职场文书
明信片寄语大全
2014/04/08 职场文书
微笑面对生活演讲稿
2014/05/13 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
导游词之麻姑仙境
2019/11/18 职场文书
详解python网络进程
2021/06/15 Python
python开发的自动化运维工具ansible详解
2021/08/07 Python