PHP淺拷貝、深拷貝簡析
阿新 • • 發佈:2017-12-07
php 淺拷貝 深拷貝 clone 克隆 前言:
在PHP中, “=” 作為賦值符號,對於普通變量是深拷貝,對於對象來說是淺拷貝(對象的賦值是引用賦值)。
註意:對象作為參數傳遞時,也是引用傳遞,無論函數定義時參數前面是否有&符號。
簡述:
*深拷貝:賦值時值完全復制,完全的copy,對其中一個作出改變,不會影響另一個.(一直在模仿,也可以超越。) *淺拷貝:賦值時,引用賦值,相當於取了一個別名。對其中一個修改,會影響另一個.(命運共同體,一榮俱榮,一損俱損)
實踐:
1.普通變量的深拷貝的實現
//普通變量的深拷貝的實現 $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.普通變量的淺拷貝的實現
//普通變量的淺拷貝的實現 $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 **/
結論:普通變量的賦值就是深拷貝
PHP淺拷貝、深拷貝簡析