《PHP實戰:深入理解PHP變量的值類型和引用類型》要點:
本文介紹了PHP實戰:深入理解PHP變量的值類型和引用類型,希望對您有用。如果有疑問,可以聯系我們。
在PHP中,大部分變量類型,如字符串,整型,浮點,數組等都是值類型的,而類和對象是引用類型,在使用的時候,必要注意這一點.PHP實戰
看到網友在討論PHP的&符號,要徹底理解它的用法,就有需要討論一下變量的兩種形式.PHP實戰
PHP的變量在內存中是這樣存儲的,變量保留的并不直接是值的內容,而是地址.例如:PHP實戰
$a = 1;
我們看起來,似乎變量$a直接存儲了 1 這個值.而實際情況是,PHP解釋器創建了變量$a,將值:1 存入內存中的某個地方,再將值的地址存到變量$a中.PHP實戰
必要取值時,先找到變量$a中的地址,再根據地址找到變量的值.PHP實戰
往下看:PHP實戰
echo $a;
會輸出1,PHP解釋器會這樣完成這一樣代碼:找到$a中存儲的地址,根據地址找到存在內存某個地方的值,輸出到屏幕.PHP實戰
看似一行簡單的代碼,流程卻是這樣的.PHP實戰
再往下看:PHP實戰
$a = 1; $b = &$a;
這里的變量$b 做了一個有趣的操作,&符號取出了$a變量中存儲的地址,并存儲到$b變量.PHP實戰
那么,如果使用下面代碼:PHP實戰
echo $b;
結果也將是輸出1,PHP解釋器先取出$b中存儲的地址,再根據地址找到值.如果我們做下面的操作:PHP實戰
$a = 2; echo $b; //輸出2
會發現改變$a的值,$b也跟著變了.其實反過來,改變$b的值,$a的值也會跟這變.PHP實戰
到這一步,我們可以確定,變量$a和$b存儲了相同的地址,指向的值是一樣的.PHP實戰
那么,我們可以得出結論:它們表示的是同一個變量.PHP實戰
進一步總結,可以得出:如果兩個變量存儲了相同的地址,它們便是同一個變量.PHP實戰
了解了著一些內容,我們開始介紹值類型和引用類型.PHP實戰
我們先看下面的代碼:PHP實戰
$a = 1; $b = $a; $a = 2; echo $b; //輸出 1
將$a的值賦給$b,改變$a的值后,$b的值依然不變,也便是說$a和$b是兩個不同的變量,指向不同的地址.這種賦值時會創建不同的變量的形式我們稱之為值類型.PHP實戰
再看:PHP實戰
class User{ public $name = ‘Tome‘; } $a = new User; $b = $a; $a->name = ‘Jim‘; echo $b->name; //輸出 Jim
同樣將$a的值賦給$b,改變$a后,$b也跟著變了,也便是說$a和$b是同一個變量,指向相同的地址.這種賦值時不會創建新的變量的形式我們稱之為引用類型.PHP實戰
維易PHP培訓學院每天發布《PHP實戰:深入理解PHP變量的值類型和引用類型》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。