是否有将 PHP 数组复制到另一个数组的函数?
我曾多次尝试复制 PHP 数组。我想将对象内部定义的数组复制到对象外部的全局对象中。
最佳答案
在 PHP 中,除了对象之外的所有变量都是通过写时复制的机制分配的,而对象是通过引用分配的。这意味着对于具有标量值的数组,$b = $a
已经会给你一个副本:
$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)
}
在 another answer 中解释了数组元素也可能是需要克隆的对象的极端情况。
您可能会被 ArrayObject
等错综复杂的东西弄糊涂。 ,它是一个与数组完全一样的对象。然而,作为一个对象,它具有引用语义。
编辑:@AndrewLarsson 在下面的评论中提出了一个观点。 PHP 有一个特殊的特性叫做“引用”。它们有点类似于 C/C++ 等语言中的指针,但并不完全相同。如果您的数组包含引用,那么当数组本身通过副本传递时,引用仍将解析为原始目标。这当然是通常所期望的行为,但我认为值得一提。
https://stackoverflow.com/questions/1532618/