Php 为什么无穷运算符不重复数组运算符?
以这种方式将它们组合在一起:Php 为什么无穷运算符不重复数组运算符?,php,Php,以这种方式将它们组合在一起: $iterator = new LimitIterator( new InfiniteIterator( new ArrayIterator(range(1, 3)) ), 0, 5 ); echo implode(', ', iterator_to_array($iterator)); 我希望得到以下输出:1,2,3,1,2 在第一次迭代ArrayIterator(1,2,3)之后,InfiniteIterato
$iterator = new LimitIterator(
new InfiniteIterator(
new ArrayIterator(range(1, 3))
),
0,
5
);
echo implode(', ', iterator_to_array($iterator));
我希望得到以下输出:1,2,3,1,2
在第一次迭代ArrayIterator(1,2,3
)之后,InfiniteIterator应该倒带ArrayIterator并从头开始,直到达到LimitIterator的限制(1,2,3,1,2
)
但实际上它的输出是
1,2,3
。有人能给我解释一下吗?您的迭代器组合工作正常。如果你用foreach迭代它
foreach ($iterator as $number) {
echo $number;
}
您将获得预期的输出12312
问题实际上是当您使用迭代器\u to\u array
将其转换回数组时
您需要将($use_keys
)设置为false
(默认值为true
),否则将覆盖重复的键
echo implode(', ', iterator_to_array($iterator, false));
这绝对有道理。谢谢