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 09 PHP
构建简单的Webmail系统
Oct 09 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
Nov 07 PHP
PHP设计模式之结构模式的深入解析
Jun 13 PHP
php内核解析:PHP中的哈希表
Jan 30 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 PHP
PHP获取youku视频真实flv文件地址的方法
Dec 23 PHP
php根据日期或时间戳获取星座信息和生肖等信息
Oct 20 PHP
php导出生成word的方法
Dec 25 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
Feb 08 PHP
PDO::inTransaction讲解
Jan 28 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
Sep 30 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 htmlentities()函数的定义和用法
2016/05/13 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
jQuery.prototype.init选择器构造函数源码思路分析
2013/02/05 Javascript
JS定义回车事件(实现代码)
2013/07/08 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
用jquery修复在iframe下的页面锚点失效问题
2014/08/22 Javascript
使用jQuery实现星级评分代码分享
2014/12/09 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
基于Vue.js的表格分页组件
2016/05/22 Javascript
jQuery Mobile中的button按钮组件基础使用教程
2016/05/23 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
2016/10/12 Javascript
jQuery双向列表选择器DIV模拟版
2016/11/01 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
vue学习之Vue-Router用法实例分析
2020/01/06 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
Python语言编写电脑时间自动同步小工具
2013/03/08 Python
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
python读写二进制文件的方法
2015/05/09 Python
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
浅谈function(函数)中的动态参数
2017/04/30 Python
基于python中的TCP及UDP(详解)
2017/11/06 Python
Python动态赋值的陷阱知识点总结
2019/03/17 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
html5实现canvas阴影效果示例
2014/05/07 HTML / CSS
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
新闻学专业应届生求职信
2013/11/08 职场文书
会议活动邀请函
2014/01/27 职场文书
监察建议书范文
2014/03/12 职场文书
学习张林森心得体会
2014/09/10 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
MySQL三种方式实现递归查询
2022/04/18 MySQL
Nginx安装配置详解
2022/06/25 Servers