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