Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么无穷运算符不重复数组运算符?_Php - Fatal编程技术网

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));

这绝对有道理。谢谢