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 02 PHP
PHP swfupload图片上传的实例代码
Sep 30 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
May 29 PHP
PHP中使用CURL模拟登录并获取数据实例
Jul 01 PHP
Linux中为php配置伪静态
Dec 17 PHP
详解php魔术方法(Magic methods)的使用方法
Feb 14 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
详解php几行代码实现CSV格式文件输出
Jul 01 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
Apr 26 PHP
PHP延迟静态绑定使用方法实例解析
Sep 05 PHP
PHP mkdir创建文件夹实现方法解析
Nov 13 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 class类的用法详细总结
2013/10/17 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
2015/07/06 PHP
js函数使用技巧之 setTimeout(function(){},0)
2009/02/09 Javascript
js ondocumentready onmouseover onclick onmouseout 样式
2010/07/22 Javascript
jquery弹出框的用法示例(一)
2013/08/26 Javascript
JS对HTML标签select的获取、添加、删除操作
2013/10/17 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
2014/03/13 Javascript
js中函数声明与函数表达式
2015/06/03 Javascript
jQuery实现返回顶部功能
2016/02/23 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
2017/09/21 Javascript
JavaScript 自定义事件之我见
2017/09/25 Javascript
详解Vue 多级组件透传新方法provide/inject
2018/05/09 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
微信小程序用户授权,以及判断登录是否过期的方法
2019/05/10 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
vue实现登录拦截
2020/06/29 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
Python性能优化技巧
2015/03/09 Python
举例详解Python中的split()函数的使用方法
2015/04/07 Python
用Python一键搭建Http服务器的方法
2018/06/01 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
使用Python webdriver图书馆抢座自动预约的正确方法
2021/03/04 Python
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
大门门卫岗位职责
2013/11/30 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
我爱我校演讲稿
2014/05/21 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
2016学习雷锋精神活动倡议书
2015/04/27 职场文书
校友会致辞
2015/07/30 职场文书
基于Redis过期事件实现订单超时取消
2021/05/08 Redis
零基础学java之循环语句的使用
2022/04/10 Java/Android
详解Mysq MVCC多版本的并发控制
2022/04/29 MySQL