PHP7 new features manual
/ 變量處理機制修改
變量處理機制修改
變量處理機制修改
PHP7版本對變量解析機制做了調(diào)整,調(diào)整如下:
一、間接變量、屬性和方法引用都按照從左到右的順序進行解釋:
$$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關(guān)鍵字現(xiàn)在只能引用簡單變量
global $$foo->bar; // 這種寫法不支持。 global ${$foo->bar}; // 需用大括號來達到效果。
三、用括號把變量或者函數(shù)括起來沒有用了
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注意第二句的調(diào)用,是用圓括號包了起來,但還是報這個嚴格錯誤。之前版本的PHP是不會報這個錯誤的。
四、引用賦值時自動創(chuàng)建的數(shù)組元素或者對象屬性順序和以前不同了。
$array = []; $array["a"] =& $array["b"]; $array["b"] = 1; var_dump($array); PHP7產(chǎn)生的數(shù)組:["a" => 1, "b" => 1] PHP5產(chǎn)生的數(shù)組:["b" => 1, "a" => 1]