php教程自学网 - 轻松零基础学php视频教程
条幅广告
当前位置: 主页 > PHP7 >

变量处理机制修改

时间:2018-08-22 10:24来源:未知 作者:admin 点击:
PHP7对变量解析机制做了调整,统一了变量解析顺序。 PHP7版本对变量解析机制做了调整,调整如下: 一、间接变量、属性和方法引用都按照从左到右的顺序进行解释: $$foo[bar][baz] //

PHP7对变量解析机制做了调整,统一了变量解析顺序。

  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]

(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
相关推荐
  • 错误处理
  • PHP 7 改变了大多数错误的报告方式。不同于 PHP 5 的传统错误报告机制,现在大

  • 错误处理机制修改
  • 一、现在有两个异常类:Exception and Error. PHP7现在有两个异常类,Exception and Er

  • 字符串处理机制修改
  • 一、含有十六进制字符的字符串不再视为数字 含有十六进制字符的字符串不再

  • 整型处理机制修改
  • 一、无效八进制数字会报编译错误 无效的八进制数字(包含大于7的数字)会报

  • 参数处理机制修改
  • 一、重复参数命名不再支持。 重复的参数命名不再支持。比如下面的代码执行