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 相关文章推荐
提问的智慧(2)
Oct 09 PHP
通过对php一些服务器端特性的配置加强php的安全
Oct 09 PHP
php 不同编码下的字符串长度区分
Sep 26 PHP
PHP中的生成XML文件的4种方法分享
Oct 06 PHP
基于php设计模式中工厂模式详细介绍
May 15 PHP
10个实用的PHP正则表达式汇总
Oct 23 PHP
PHP程序员常见的40个陋习,你中了几个?
Nov 20 PHP
php中JSON的使用方法
Apr 30 PHP
ThinkPHP里用U方法调用js文件实例
Jun 18 PHP
浅谈关于PHP解决图片无损压缩的问题
Sep 01 PHP
PHP设计模式之工厂模式详解
Oct 24 PHP
PHP抽象类和接口用法实例详解
Jul 20 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
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
php中\r \r\n \t的区别示例介绍
2014/02/08 PHP
ThinkPHP控制器详解
2015/07/27 PHP
PHP 5.6.11中CURL模块问题的解决方法
2016/08/08 PHP
jQuery 操作XML入门
2008/12/25 Javascript
对象特征检测法判断浏览器对javascript对象的支持
2009/07/25 Javascript
初识javascript 文档碎片
2010/07/13 Javascript
在jQuery1.5中使用deferred对象 着放大镜看Promise
2011/03/12 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
2014/08/12 Javascript
javascript实现移动端上的触屏拖拽功能
2016/03/04 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
2016/06/16 Javascript
jQuery实现遍历XML节点和属性的方法示例
2018/04/29 jQuery
微信小程序排坑指南详解
2018/05/23 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
JavaScript函数IIFE使用详解
2019/10/21 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
python每隔N秒运行指定函数的方法
2015/03/16 Python
python使用arp欺骗伪造网关的方法
2015/04/24 Python
Python中标准库OS的常用方法总结大全
2017/07/19 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
2020/09/30 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
使用canvas对多图片拼合并导出图片的方法
2018/08/28 HTML / CSS
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
银行求职信个人范文
2013/12/16 职场文书
聊城大学毕业生自荐书
2014/02/01 职场文书
俞敏洪北大演讲稿
2014/05/22 职场文书
学校施工安全责任书
2015/01/29 职场文书
护士先进个人总结
2015/02/13 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书
您对思维方式了解多少?
2019/12/09 职场文书