PHP數組的深拷貝和引用賦值

來源:互聯網
上載者:User

標籤:print   info   技術   color   php數組   空格   post   數組   com   

 

一、當PHP陣列變數$arr賦值給另一個變數$one時,此時是把陣列變數$arr整個複製一份給$one,即使$arr是多維陣列。

例:

$arr = array(1, 2, 3, array(‘one‘, ‘two‘));$one = $arr;
# 輸出原數組$arrprint_r($arr);  # Array ( [0] => 1 [1] => 2 [2] => 3 [3] => Array ( [0] => one [1] => two ) )

# 輸出新數組$one
print_r($one);  # Array ( [0] => 1 [1] => 2 [2] => 3 [3] => Array ( [0] => one [1] => two ) )

# 修改原數組$arr,並輸出$arr[0] = 4; $arr[3][1] = ‘three‘;print_r($arr);  # Array ( [0] => 4 [1] => 2 [2] => 3 [3] => Array ( [0] => one [1] => three ) )

# 輸出新數組$oneprint_r($one);  # Array ( [0] => 1 [1] => 2 [2] => 3 [3] => Array ( [0] => one [1] => two ) )
從例子可以看出,修改原數組的值並沒有影響新數組

二、當PHP陣列變數$arr使用引用賦值給另一個變數$one時,此時陣列變數$arr 並沒有 整個複製一份給$one,而是把數組的引用賦給$one,即兩個變數指向同一個數組
例:
$arr = array(1, 2, 3, array(‘one‘, ‘two‘));$one = &$arr;# 輸出原數組$arrprint_r($arr);  # Array ( [0] => 1 [1] => 2 [2] => 3 [3] => Array ( [0] => one [1] => two ) ) # 輸出新數組$oneprint_r($one);  # Array ( [0] => 1 [1] => 2 [2] => 3 [3] => Array ( [0] => one [1] => two ) ) # 修改原數組$arr,並輸出$arr[0] = 4;  $arr[3][1] = ‘three‘;print_r($arr);  # Array ( [0] => 4 [1] => 2 [2] => 3 [3] => Array ( [0] => one [1] => three ) ) # 輸出新數組$oneprint_r($one);  # Array ( [0] => 4 [1] => 2 [2] => 3 [3] => Array ( [0] => one [1] => three ) ) 
從例子可以看出,修改了原數組的值,同時新數組值也改變了。

上面的代碼,是在寫部落格時直接寫進來的,如果直接複製粘貼到sublime text3裡面,執行會報錯。

疑惑半天,才發現是代碼格式有空格的原因。可能因為是用此部落格外掛程式直接編寫的吧。在sublime text3裡面修改格式後運行正常。




PHP數組的深拷貝和引用賦值

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.