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 相关文章推荐
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
Oct 29 PHP
php中session_unset与session_destroy的区别分析
Jun 16 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
Jul 19 PHP
php设计模式之单例模式使用示例
Jan 20 PHP
php警告Creating default object from empty value 问题的解决方法
Apr 02 PHP
PHP静态文件生成类实例
Nov 29 PHP
php中$_POST与php://input的区别实例分析
Jan 07 PHP
ucenter中词语过滤原理分析
Jul 13 PHP
laravel ORM 只开启created_at的几种方法总结
Jan 29 PHP
PHP创建自己的Composer包方法
Apr 09 PHP
PHP实现的支付宝支付功能示例
Mar 26 PHP
PHP实现随机发放扑克牌
Apr 21 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编程中字符串处理的5个技巧小结
2007/11/13 PHP
php+js iframe实现上传头像界面无跳转
2014/04/29 PHP
php经典算法集锦
2015/11/14 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
2014/06/10 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
2019/04/10 Javascript
javascript实现自由编辑图片代码详解
2019/06/21 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
[01:49]一目了然!DOTA2DotA快捷操作对比第二弹
2014/05/16 DOTA
Fiddler如何抓取手机APP数据包
2016/01/22 Python
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
Python编写登陆接口的方法
2017/07/10 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
基于Python函数和变量名解析
2019/07/19 Python
基于Python制作一副扑克牌过程详解
2020/10/19 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
家得宝官网:The Home Depot(全球最大的家居装饰专业零售商)
2018/12/17 全球购物
荷兰睡眠专家:Beter Bed
2020/11/23 全球购物
四年的大学生生活自我评价
2013/12/09 职场文书
如何填写个人简历自我评价
2013/12/10 职场文书
保护野生动物倡议书
2014/05/16 职场文书
大学生社会实践活动总结
2014/07/03 职场文书
学生评语集锦
2015/01/04 职场文书
新教师个人总结
2015/02/06 职场文书
2015年征兵工作总结
2015/07/23 职场文书
Python作用域和名称空间的详细介绍
2022/04/13 Python