標籤: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數組的深拷貝和引用賦值