我试图克隆一个 \ArrayIterator 对象,但克隆的对象好像仍然指向原始对象。
有人对这种行为有解释吗?提前谢谢您。
$list = new \ArrayIterator;
$list->append('a');
$list->append('b');
$list2 = clone $list;
$list2->append('c');
$list2->append('d');
// below result prints '4', i am expecting result '2'
echo $list->count();
有人对这种行为有解释吗?提前谢谢您。
警告:此函数目前没有记录;只有其参数列表可用。
我也考虑了同样的参考问题,就像你解释的那样,"数组所持有的必须是一个对数组的引用,而不是直接存储在对象中的数组本身。"但是经过我的测试,我发现它并没有引用任何外部数组。相反,它将数组存储在内部,然后在克隆时将其保留为引用。我不知道实际原因是什么,但基于这种情况,上面的句子并不是100%准确的。 - Tᴀʀᴇǫ Mᴀʜᴍᴏᴏᴅ$myArray = array('m'); $list = new ArrayIterator($myArray);
(稍后您将看到,ArrayIterator不会影响原始的$myArray
以供未来操作使用。) - Tᴀʀᴇǫ Mᴀʜᴍᴏᴏᴅ