問題

是否有一個函式可以將PHP陣列複製到另一個?

我幾次嘗試複製PHP陣列.我想將物件內部定義的陣列複製到物件外的全域性.

  最佳答案

在PHP陣列中,透過副本分配,物件透過引用分配.這意味著:

 $a = array();
$b = $a;
$b['foo'] = 42;
var_dump($a);
 

產量:

 array(0) {
}
 

鑑於:

 $a = new StdClass();
$b = $a;
$b->foo = 42;
var_dump($a);
 

產量:

 object(stdClass)#1 (1) {
  ["foo"]=>
  int(42)
}
 

您可能會因複雜性而感到困惑,例如 ArrayObject ,這是一個完全像陣列一樣的物件.但是,作為一個物件,它具有引用語義.

編輯:@AndrewLarsson在下面的評論中提出了一點. PHP有一個名為“引用”的特殊功能.它們有點類似於C/C++等語言的指標,但不是完全相同.如果您的陣列包含引用,那麼當陣列本身透過副本傳遞時,引用仍將解析為原始目標.當然這通常是所需的行為,但我認為值得一提.

  相同標籤的其他問題

phparrayscopy