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模板函数 正则实现代码
Oct 15 PHP
PHPer 需要了解的 5 个 Composer 小技巧
Aug 18 PHP
如何让CI框架支持service层
Oct 29 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
May 27 PHP
Zend Framework连接Mysql数据库实例分析
Mar 19 PHP
深入理解PHP 数组之count 函数
Jun 13 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
Jul 18 PHP
PHP简单实现冒泡排序的方法
Dec 26 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
PHP实现常用排序算法的方法
Feb 05 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 PHP
PHP实现简单的计算器
Aug 28 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操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
2014/10/30 PHP
PHP整合七牛实现上传文件
2015/07/03 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
关于JS控制代码暂停的实现方法分享
2012/10/11 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
解决js函数闭包内存泄露问题的办法
2016/01/25 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
jQuery实现模拟flash头像裁切上传功能示例
2016/12/11 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
AngularJS日程表案例详解
2017/08/15 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
微信小程序使用npm支持踩坑
2018/11/07 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
用Vue编写抽象组件的方法
2019/05/06 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
vue路由拦截器和请求拦截器知识点总结
2019/11/08 Javascript
Python unittest基本使用方法代码实例
2020/06/29 Python
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
2014/07/16 面试题
软件配置管理有什么好处
2015/04/15 面试题
四议两公开实施方案
2014/03/28 职场文书
工作说明书格式
2014/07/29 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
门卫岗位职责
2015/02/09 职场文书
总经理助理岗位职责范本
2015/03/31 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
python基于turtle绘制几何图形
2021/06/15 Python
win10搭建配置ftp服务器的方法
2022/08/05 Servers