【发布时间】:2010-03-24 15:04:43
【问题描述】:
假设我有一个节点(对象)数组。我需要创建这个数组的副本,我可以在不影响源数组的情况下对其进行修改。但是更改节点会影响源节点。基本上维护指向对象的指针而不是复制它们的值。
// node(x, y)
$array[0] = new node(15, 10);
$array[1] = new node(30, -10);
$array[2] = new node(-2, 49);
// Some sort of copy system
$array2 = $array;
// Just to show modification to the array doesn't affect the source array
array_pop($array2);
if (count($array) == count($array2))
echo "Fail";
// Changing the node value should affect the source array
$array2[0]->x = 30;
if ($array2[0]->x == $array[0]->x)
echo "Goal";
最好的方法是什么?
【问题讨论】:
-
我不明白。当您希望在更改重复数组中的值时更新源数组时,如何修改数组而不影响源数组?你能举个例子说明你在做什么吗?
-
我认为他的意思是重复的数组应该具有对与第一个数组相同的实例的引用,但它本身独立于数组。因此,更改第二个数组的内容不会修改第一个数组,但更改第二个数组引用的类中的某些参数将修改第一个数组引用的同一实例。
-
@Kjir:啊哈,我现在明白了 :)
-
@Kjir:哦,那我下面的回答正好相反哈哈。
-
@prodigitalson:那你应该删除它。