PHP7变量处理机制修改


Posted in PHP onMarch 09, 2021

PHP7版本对变量解析机制做了调整,调整如下:

一、间接变量、属性和方法引用都按照从左到右的顺序进行解释:

 $$foo['bar']['baz'] // interpreted as ($$foo)['bar']['baz']
 $foo->$bar['baz']   // interpreted as ($foo->$bar)['baz']
 $foo->$bar['baz']() // interpreted as ($foo->$bar)['baz']()
 Foo::$bar['baz']()  // interpreted as (Foo::$bar)['baz']()

如果想改变解释的顺序,可以使用大括号:

${$foo['bar']['baz']}
$foo->{$bar['baz']}
$foo->{$bar['baz']}()
Foo::{$bar['baz']}()

二、global关键字现在只能引用简单变量  

global $$foo->bar;    // 这种写法不支持。
global ${$foo->bar};  // 需用大括号来达到效果。

三、用括号把变量或者函数括起来没有用了

function getArray() { return [1, 2, 3]; }
$last = array_pop(getArray());
// Strict Standards: Only variables should be passed by reference
$last = array_pop((getArray()));
// Strict Standards: Only variables should be passed by reference

注意第二句的调用,是用圆括号包了起来,但还是报这个严格错误。之前版本的PHP是不会报这个错误的。

四、引用赋值时自动创建的数组元素或者对象属性顺序和以前不同了。 

$array = [];
$array["a"] =& $array["b"];
$array["b"] = 1;
var_dump($array);

PHP7产生的数组:["a" => 1, "b" => 1]
PHP5产生的数组:["b" => 1, "a" => 1]

 

PHP 相关文章推荐
php Memcache 中实现消息队列
Nov 24 PHP
session在PHP大型web应用中的使用
Jun 25 PHP
PHP中实现生成静态文件的方法缓解服务器压力
Jan 07 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
Jun 17 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 PHP
Yii模型操作之criteria查找数据库的方法
Jul 15 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
Oct 14 PHP
CI框架表单验证实例详解
Nov 21 PHP
PHP与SQL语句常用大全
Dec 10 PHP
一个实用的php验证码类
Jul 06 PHP
详解PHP实现支付宝小程序用户授权的工具类
Dec 25 PHP
Laravel 类和接口注入相关的代码
Oct 15 PHP
PHP7新特性
Mar 09 #PHP
Yii 实现数据加密和解密
Mar 09 #PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
Mar 09 #PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
Mar 09 #PHP
宝塔面板在NGINX环境中TP5.1如何运行?
Mar 09 #PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
Mar 09 #PHP
Swoole扩展的6种模式深入详解
Mar 04 #PHP
You might like
php 无限级 SelectTree 类
2009/05/19 PHP
解析php中获取系统信息的方法
2013/06/25 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
SUN的《AJAX与J2EE》全文译了
2007/02/23 Javascript
利用jQuery的$.event.fix函数统一浏览器event事件处理
2009/12/21 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
javascript跨域刷新实现代码
2011/01/01 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
javascript的日期对象、数组对象、二维数组使用说明
2014/12/22 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
2016/12/14 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
vue全局使用axios的方法实例详解
2018/11/22 Javascript
对python3中, print横向输出的方法详解
2019/01/28 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
Django 返回json数据的实现示例
2020/03/05 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
Python参数传递对象的引用原理解析
2020/05/22 Python
python 爬取免费简历模板网站的示例
2020/09/27 Python
CSS3绘制超炫的上下起伏波动进度加载动画
2016/04/21 HTML / CSS
教育学专业毕业生的自我评价
2013/11/21 职场文书
毕业生个人求职信范例分享
2013/12/17 职场文书
三分钟演讲稿范文
2014/04/24 职场文书
数控机床专业自荐信
2014/05/19 职场文书
优秀员工评优方案
2014/06/13 职场文书
幼师求职信
2014/06/23 职场文书
个人委托书范本
2014/09/13 职场文书
2014年班长个人工作总结
2014/11/14 职场文书
2014年控辍保学工作总结
2014/12/08 职场文书
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL