前言:
延平網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、成都響應式網(wǎng)站建設等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司于2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)公司。
在PHP中, “=” 作為賦值符號,對于普通變量是深拷貝,對于對象來說是淺拷貝(對象的賦值是引用賦值)。
注意:對象作為參數(shù)傳遞時,也是引用傳遞,無論函數(shù)定義時參數(shù)前面是否有&符號。
簡述:
*深拷貝:賦值時值完全復制,完全的copy,對其中一個作出改變,不會影響另一個.(一直在模仿,也可以超越。) *淺拷貝:賦值時,引用賦值,相當于取了一個別名。對其中一個修改,會影響另一個.(命運共同體,一榮俱榮,一損俱損)
實踐:
1.普通變量的深拷貝的實現(xiàn)
//普通變量的深拷貝的實現(xiàn) $a='zhangsan'; $b=$a; echo $a."\r\n"; echo $b."\r\n"; $b="lisi"; echo $a."\r\n"; echo $b."\r\n"; /** *輸出結果 *zhangsan *zhangsan * *zhangsan *lisi **/
結論:普通變量的賦值就是深拷貝
2.普通變量的淺拷貝的實現(xiàn)
//普通變量的淺拷貝的實現(xiàn) $c="wangwu"; $d=&$c; echo $c."\r\n"; echo $d."\r\n"; echo "\r\n"; $d="xiaoer"; echo $c."\r\n"; echo $d."\r\n"; /**輸出結果 *wangwu *wangwu * *xiaoer *xiaoer **/
結論:普通變量的引用賦值是深拷貝
3.對象深拷貝的實現(xiàn)
//對象深拷貝的實現(xiàn) class Person{ public $name; } $zhangsan=new Person(); $zhangsan->name='zhangsan'; $lisi=$zhangsan; echo $zhangsan->name."\r\n"; echo $lisi->name."\r\n"; echo "\r\n"; $lisi->name='lisi'; echo $zhangsan->name."\r\n"; echo $lisi->name."\r\n"; /**輸出結果 *zhangsan *zhangsan * *lisi *lisi */
結論:對象的賦值是深拷貝
4.對象淺拷貝的實現(xiàn)
//對象淺拷貝的實現(xiàn) $JackMa=new Person(); $JackMa->name='Ma Yun'; $PoneyMa=clone $JackMa; echo $JackMa->name."\r\n"; echo $PoneyMa->name."\r\n"; echo "\r\n"; $PoneyMa->name='Ma Huateng'; echo $JackMa->name."\r\n"; echo $PoneyMa->name."\r\n"; /**輸出結果 *Ma Yun *Ma Yun * *Ma Yun *Ma Huateng */
結論:對象的克隆是淺拷貝