溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP淺拷貝、深拷貝簡(jiǎn)析

發(fā)布時(shí)間:2020-06-14 05:14:46 來(lái)源:網(wǎng)絡(luò) 閱讀:1032 作者:hgditren 欄目:web開發(fā)

前言:

        在PHP中, “=” 作為賦值符號(hào),對(duì)于普通變量是深拷貝,對(duì)于對(duì)象來(lái)說(shuō)是淺拷貝(對(duì)象的賦值是引用賦值)。
        注意:對(duì)象作為參數(shù)傳遞時(shí),也是引用傳遞,無(wú)論函數(shù)定義時(shí)參數(shù)前面是否有&符號(hào)。


簡(jiǎn)述:       

    *深拷貝:賦值時(shí)值完全復(fù)制,完全的copy,對(duì)其中一個(gè)作出改變,不會(huì)影響另一個(gè).(一直在模仿,也可以超越。)    
    *淺拷貝:賦值時(shí),引用賦值,相當(dāng)于取了一個(gè)別名。對(duì)其中一個(gè)修改,會(huì)影響另一個(gè).(命運(yùn)共同體,一榮俱榮,一損俱損)


實(shí)踐:


1.普通變量的深拷貝的實(shí)現(xiàn)  

//普通變量的深拷貝的實(shí)現(xiàn)
$a='zhangsan';
$b=$a;
echo $a."\r\n";
echo $b."\r\n";


$b="lisi";
echo $a."\r\n";
echo $b."\r\n";

/**
 *輸出結(jié)果
 *zhangsan
 *zhangsan
 *
 *zhangsan
 *lisi
 **/

 結(jié)論:普通變量的賦值就是深拷貝


2.普通變量的淺拷貝的實(shí)現(xiàn)

//普通變量的淺拷貝的實(shí)現(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";

/**輸出結(jié)果
 *wangwu
 *wangwu
 *   
 *xiaoer
 *xiaoer
 **/

結(jié)論:普通變量的引用賦值是深拷貝


3.對(duì)象深拷貝的實(shí)現(xiàn)

//對(duì)象深拷貝的實(shí)現(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";

/**輸出結(jié)果
 *zhangsan
 *zhangsan
 *
 *lisi
 *lisi
 */

結(jié)論:對(duì)象的賦值是深拷貝


4.對(duì)象淺拷貝的實(shí)現(xiàn) 

//對(duì)象淺拷貝的實(shí)現(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";

/**輸出結(jié)果
 *Ma Yun
 *Ma Yun
 *
 *Ma Yun
 *Ma Huateng
 */

結(jié)論:對(duì)象的克隆是淺拷貝


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI