PHP7新功能手冊(cè)
/ 變量處理機(jī)制修改
變量處理機(jī)制修改
變量處理機(jī)制修改
PHP7版本對(duì)變量解析機(jī)制做了調(diào)整,調(diào)整如下:
一、間接變量、屬性和方法引用都按照從左到右的順序進(jìn)行解釋:
$$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']()
如果想改變解釋的順序,可以使用大括號(hào):
${$foo['bar']['baz']} $foo->{$bar['baz']} $foo->{$bar['baz']}() Foo::{$bar['baz']}()
二、global關(guān)鍵字現(xiàn)在只能引用簡(jiǎn)單變量
global $$foo->bar; // 這種寫法不支持。 global ${$foo->bar}; // 需用大括號(hào)來(lái)達(dá)到效果。
三、用括號(hào)把變量或者函數(shù)括起來(lái)沒(méi)有用了
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)用,是用圓括號(hào)包了起來(lái),但還是報(bào)這個(gè)嚴(yán)格錯(cuò)誤。之前版本的PHP是不會(huì)報(bào)這個(gè)錯(cuò)誤的。
四、引用賦值時(shí)自動(dòng)創(chuàng)建的數(shù)組元素或者對(duì)象屬性順序和以前不同了。
$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]