1. 程式人生 > >PHP淺拷貝、深拷貝簡析

PHP淺拷貝、深拷貝簡析

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淺拷貝、深拷貝簡析