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 相关文章推荐
第十四节 命名空间 [14]
Oct 09 PHP
phpBB BBcode处理的漏洞
Oct 09 PHP
图象函数中的中文显示
Oct 09 PHP
php str_replace的替换漏洞
Mar 15 PHP
php foreach 使用&(与运算符)引用赋值要注意的问题
Feb 16 PHP
php自动获取目录下的模板的代码
Aug 08 PHP
LotusPhp笔记之:Cookie组件的使用详解
May 06 PHP
浅谈php的优缺点
Jul 14 PHP
php中preg_match的isU代表什么意思
Oct 01 PHP
浅谈关于PHP解决图片无损压缩的问题
Sep 01 PHP
PHP+Apache环境中如何隐藏Apache版本
Nov 24 PHP
TP5.0框架实现无限极回复功能的方法分析
May 04 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抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
隐性调用php程序的方法
2015/06/13 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
extjs fckeditor集成代码
2009/05/10 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
2013/03/21 Javascript
JavaScript实现简单图片翻转的方法
2015/04/17 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
2019/05/20 Javascript
element-ui组件中input等的change事件中传递自定义参数
2019/05/22 Javascript
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
解决Python3中的中文字符编码的问题
2018/07/18 Python
python中文编码与json中文输出问题详解
2018/08/24 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
python画微信表情符的实例代码
2019/10/09 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
数控技术应届生求职信
2013/11/13 职场文书
军训口号
2014/06/13 职场文书
初三学生语文考试作弊检讨书
2014/12/14 职场文书
公司内部升职自荐信
2015/03/27 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书
【超详细】八大排序算法的各项比较以及各自特点
2021/03/31 Python
Python基础详解之邮件处理
2021/04/28 Python
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android