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 相关文章推荐
利用js调用后台php进行数据处理原码
Oct 09 PHP
php socket方式提交的post详解
Jul 19 PHP
PHP获取url的函数代码
Aug 02 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
Dec 21 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
Jun 17 PHP
html静态页面调用php文件的方法
Nov 13 PHP
php简单实现查询数据库返回json数据
Apr 16 PHP
Zend Framework教程之Bootstrap类用法概述
Mar 14 PHP
php封装的验证码工具类完整实例
Oct 19 PHP
使用phpQuery获取数组的实例
Mar 13 PHP
Yii2中添加全局函数的方法分析
May 04 PHP
PHP封装的非对称加密RSA算法示例
May 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
用 PHP5 轻松解析 XML
2006/12/04 PHP
php利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
weiphp微信公众平台授权设置
2016/01/04 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
In Javascript Class, how to call the prototype method.(three method)
2007/01/09 Javascript
js中匿名函数的N种写法
2010/09/08 Javascript
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
2012/08/24 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
原生js实现日期联动
2015/01/12 Javascript
整理Javascript函数学习笔记
2015/12/01 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
NodeJS的Promise的用法解析
2016/05/05 NodeJs
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python实现根据月份和日期得到星座的方法
2015/03/27 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
python实现汉诺塔算法
2021/03/01 Python
代码实例讲解python3的编码问题
2019/07/08 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
python数据预处理 :数据抽样解析
2020/02/24 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
2021/03/04 Python
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
教师党员思想汇报
2014/01/06 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
副科竞争上岗演讲稿
2014/05/12 职场文书
车辆年审委托书范本
2014/09/18 职场文书
结婚幸福感言
2015/08/01 职场文书
八年级历史教学反思
2016/02/19 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书
Python实现制作销售数据可视化看板详解
2021/11/27 Python
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android