我想要对数组的引用,然后取消对数组的几个元素的引用。对于这个问题,我已经简化的代码:未设置通过引用传递,也取消原始值
echo"1:";
print_r($this->data);
$return =& $this->data;
foreach(range(1,10) AS $key)
{
unset($return[$key]);
}
echo"2:";
print_r($this->data);
$这 - >数据是一个数组。这段代码应该保持$ this-> data不变,但它不会。输出是:
1:Array
(
[0] => Array
(
[id] => 1
)
[1] => Array
(
[id] => 2
)
[2] => Array
(
[id] => 3
)
[3] => Array
(
[id] => 4
)
[4] => Array
(
[id] => 5
)
[5] => Array
(
[id] => 6
)
[6] => Array
(
[id] => 7
)
[7] => Array
(
[id] => 8
)
[8] => Array
(
[id] => 9
)
[9] => Array
(
[id] => 10
)
)
2:Array
(
[0] => Array
(
[id] => 1
)
)
为什么通过取消设置引用,$ this->数据中的数组被改变?关于删除引用的所有其他问题在stackoverflow使用unset()函数,那么为什么这会给出问题?
谢谢。
“我用我的左手指在什么时候,我不想丢掉我把我的右手手指点在同一的东西,扔掉那东西。“ – 2014-10-07 20:09:28
取消设置参考通常不会改变原始数据,从我到处阅读的内容。 – 2014-10-08 13:21:58
不同之处在于您并未真正取消参考。您在引用的数据中取消设置值。看到这个沙箱:[PHP Unset Test](http://sandbox.onlinephpfunctions.com/code/3799128b2507b59a2ef9e64bdbeae1e27b8e88ef) – TecBrat 2014-10-08 13:57:59