是否有一个函数可以将一个PHP数组复制到另一个?

是否有一个函数可以将一个PHP数组复制到另一个

我在尝试复制PHP数组时被烧坏了几次。我想将对象内部定义的数组复制到对象外部的全局数组

在PHP中,数组是通过副本分配的,而对象是通过引用分配的。这意味着:

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

将产生:

数组(0){
}

鉴于:

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

收益率:

对象(stdClass)#1(1){
[“foo”]=>
内部(42)
}

您可能会被诸如ArrayObject之类的复杂事物弄糊涂,它是一个行为完全类似于数组的对象。然而,作为一个对象,它具有引用语义

编辑:@AndrewLarsson在下面的评论中提出了一点。PHP有一个称为“引用”的特殊特性。它们与C/C++等语言中的指针有些相似,但并不完全相同。如果数组包含引用,那么当数组本身通过副本传递时,引用仍将解析为原始目标。这当然是人们通常想要的行为,但我认为值得一提

发表评论