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
理解PHP5中static和const关键字的区别
Mar 19 PHP
抓取YAHOO股票报价的类
May 15 PHP
PHP高自定义性安全验证码代码
Nov 27 PHP
php日历制作代码分享
Jan 20 PHP
使用PHP生成二维码的方法汇总
Jul 22 PHP
PHP读取PPT文件的方法
Dec 10 PHP
PHP合并数组的2种方法小结
Nov 24 PHP
php 算法之实现相对路径的实例
Oct 17 PHP
php对象工厂类完整示例
Aug 09 PHP
laravel框架邮箱认证实现方法详解
Nov 22 PHP
PHP实现文件上传后台处理脚本
Mar 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利用iframe实现无刷新文件上传功能的代码
2011/09/29 PHP
php cURL和Rolling cURL并发方式比较
2013/10/30 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
PHP 代码简洁之道(小结)
2019/10/16 PHP
JavaScript快速检测浏览器对CSS3特性的支持情况
2012/09/26 Javascript
js固定DIV高度,超出部分自动添加滚动条的简单方法
2013/07/10 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
炫酷的js手风琴效果
2016/10/13 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
js 数据类型判断的方法
2020/12/03 Javascript
[01:06]DOTA2小知识课堂 Ep.02 吹风竟可解梦境缠绕
2019/12/05 DOTA
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
谈谈python中GUI的选择
2018/03/01 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
Pandas 合并多个Dataframe(merge,concat)的方法
2018/06/08 Python
python xpath获取页面注释的方法
2019/01/14 Python
Python中输入和输出(打印)数据实例方法
2019/10/13 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
工程造价专业大学生职业规划范文
2014/03/09 职场文书
《欢乐的泼水节》教学反思
2014/04/22 职场文书
药品营销策划方案
2014/06/15 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书
2015年小班保育员工作总结
2015/05/27 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
师德培训心得体会2016
2016/01/09 职场文书
用python修改excel表某一列内容的操作方法
2021/06/11 Python
python的html标准库
2022/04/29 Python