$$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']()
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
PHP7版本对变量解析机制做了调整,前面提到变量作用域时简单提过。下面我们来详细看一看。
间接变量、属性和方法引用:按照从左到右顺序进行解析
如果想改变解释的顺序,可以使用大括号:
global关键字只能引用简单变量
用括号将变量或函数括起来失效了
引用赋值时自动创建的数组元素或者对象属性顺序和以前不同了