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连接MySQL代码的参数说明
Jun 07 PHP
PHP 超链接 抓取实现代码
Jun 29 PHP
php获取mysql数据库中的所有表名的代码
Apr 23 PHP
PHP 第三节 变量介绍
Apr 28 PHP
PHP安全性漫谈
Jun 28 PHP
linux命令之调试工具strace的深入分析
Jun 03 PHP
PHP中array_merge和array相加的区别分析
Jun 17 PHP
采用thinkphp自带方法生成静态html文件详解
Jun 13 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
Oct 30 PHP
Apache连接PHP后无法启动问题解决思路
Jun 18 PHP
Yii redis集合的基本使用教程
Jun 14 PHP
php实现图片压缩处理
Sep 09 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使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
PHP中字符安全过滤函数使用小结
2015/02/25 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
JavaScript在for循环中绑定事件解决事件参数不同的情况
2014/01/20 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
三种Webpack打包方式(小结)
2018/09/19 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
JS script脚本中async和defer区别详解
2020/06/24 Javascript
python调用短信猫控件实现发短信功能实例
2014/07/04 Python
Python中还原JavaScript的escape函数编码后字符串的方法
2014/08/22 Python
python自然语言编码转换模块codecs介绍
2015/04/08 Python
python添加菜单图文讲解
2019/06/04 Python
PowerBI和Python关于数据分析的对比
2019/07/11 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
python实现音乐播放器 python实现花框音乐盒子
2020/02/25 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
基于python纯函数实现井字棋游戏
2020/05/27 Python
python属于解释型语言么
2020/06/15 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
中软Java笔试题
2012/11/11 面试题
Linux操作面试题
2015/02/11 面试题
服务中心夜班服务员岗位职责
2013/11/27 职场文书
高中打架检讨书
2014/02/13 职场文书
计算机专业求职信
2014/06/02 职场文书
学生个人评语大全
2015/01/04 职场文书
爱心捐款活动总结
2015/05/09 职场文书
十七岁的单车观后感
2015/06/12 职场文书
Java数组与堆栈相关知识总结
2021/06/29 Java/Android
浅谈css实现背景颜色半透明的两种方法
2021/12/06 HTML / CSS
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python