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.MVC的模板标签系统(五)
Sep 05 PHP
漂亮但不安全的CTB
Oct 09 PHP
一些关于PHP的知识
Nov 17 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
May 24 PHP
解析Linux下Varnish缓存的配置优化
Jun 20 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
Jun 25 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
Nov 19 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
Jan 11 PHP
PHP性能优化大全(php.ini)
May 20 PHP
详解Yii2 rules 的验证规则
Dec 02 PHP
php中__toString()方法用法示例
Dec 07 PHP
php实现数组纵向转横向并过滤重复值的方法分析
May 29 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代码
2010/08/08 PHP
PHP实现递归无限级分类
2015/10/22 PHP
php使用CutyCapt实现网页截图保存的方法
2016/10/03 PHP
javascript之通用简单的table选项卡实现(二)
2010/05/09 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
axios简单实现小程序延时loading指示
2018/07/30 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
vue和小程序项目中使用iconfont的方法
2020/05/19 Javascript
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
python解析模块(ConfigParser)使用方法
2013/12/10 Python
python分析网页上所有超链接的方法
2015/05/08 Python
python实现在字符串中查找子字符串的方法
2015/07/11 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
python matplotlib坐标轴设置的方法
2017/12/05 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
利用pyecharts读取csv并进行数据统计可视化的实现
2020/04/17 Python
荟萃全球保健品:维他购
2018/05/09 全球购物
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
美国在线艺术商店:HandmadePiece
2020/11/06 全球购物
相亲大会策划方案
2014/06/05 职场文书
温馨提示标语
2014/06/26 职场文书
2015年信访维稳工作总结
2015/04/07 职场文书
项目经理助理岗位职责
2015/04/13 职场文书