如何在PHP中克隆对象数组?

2022-08-30 09:00:06

我有一个对象数组。我知道对象由“引用”分配,数组由“值”分配。但是当我分配数组时,数组的每个元素都引用该对象,因此当我修改任一数组中的对象时,更改将反映在另一个数组中。

有没有一种简单的方法来克隆数组,或者我必须循环使用它来克隆每个对象?


答案 1
$array = array_merge(array(), $myArray);

答案 2

复制数组时,对相同对象的引用已被复制。但是,在创建第二个数组时,您似乎想要对第一个数组中引用的对象进行层复制深度复制,因此您将获得两个不同但相似的对象的数组。

我现在能想到的最直观的方法是循环;可能有更简单或更优雅的解决方案:

$new = array();

foreach ($old as $k => $v) {
    $new[$k] = clone $v;
}