带有range()和foreach循环的PHP数字数组

带有range()和foreach循环的PHP数字数组,php,arrays,foreach,range,Php,Arrays,Foreach,Range,我对range()有一个非常奇怪的问题; 根据文件: Create an array containing a range of elements 但当我这样做的时候: foreach (range(900,950,1) as $art_id){ //ob_start(); //do stuff //do a lot more stuff echo $art_id; //ob_get_clean(); } 甚至 $arts_id = range (90

我对range()有一个非常奇怪的问题; 根据文件:

Create an array containing a range of elements
但当我这样做的时候:

foreach (range(900,950,1) as $art_id){
    //ob_start();
    //do stuff
    //do a lot more stuff
    echo $art_id;
    //ob_get_clean(); }
甚至

$arts_id = range (900, 920);
 foreach ($arts_id as $art_id){
        //ob_start();
        //do stuff
        //do a lot more stuff
        echo $art_id;
        //ob_get_clean(); }
输出以一系列的方式重复自身,如

“9009009019009019029009019002903900…”

这意味着它将在每个循环后返回到第一个ID

(1st iteration -> 900
2nd iteration -> 900,901
3rd iteration -> 900,901,902
...)
当我刚刚放置一个手动阵列时,它工作得井然有序,没有重复:

$arts_id = array(900,901,902,903,904,905,906,907,908,909,910...);
我做错了什么(再次??)

编辑I

以下是整个脚本:

它实际上是脚本中包含的slashdot抓取示例的一个稍加修改的版本。没什么特别的


它在WP内部执行,但在循环外部执行。

它必须在代码的其余部分中执行,因为这样可以正常工作。 请分享更多的脚本

看起来foreach嵌套在一个类似的foreach中

 $arts_id = range (900, 920);
 foreach ($arts_id as $art_id){
    foreach (range (900,$art_id) as $art_id2){
        echo $art_id2."<br/>";
    }
 }

将echo$output置于循环之外,或$ouptut='';在循环内部。

第三个参数是
步骤
,它的默认值是
1
,因此在您的情况下不必使用它。@fedorqui,谢谢。我知道,事实上第二个例子我不使用它。我只是在检查它失败的原因。我也在检查,在给定的所有情况下,性能都正常。您不是在循环中嵌套不同的
foreach
或更改值吗?否则听起来很奇怪。@fedorqui-yep。。大量嵌套:-)请参阅整个脚本的更新
range()
和具有相同内容的手动数组之间没有明显区别。我已经发现了echo并将其取出。这只是调试。。但是循环确实执行了多次(插入post),我不明白为什么手动插入数组不会与回音在同一位置重复。如果回音是问题所在,为什么手动插入数组不会给出重复的结果?当然<代码>$ret=array()应该是正确答案。。正在将
刮片\u slashdot
添加到数组中,而不重置它。因此,它在每次迭代中都会添加到它。我仍然需要验证,但它看起来是正确的。不是回声或嵌套问题。但它仍然无法回答为什么手动阵列插入可以正常工作。。。
Article 1
Article 1, Article 2
Article 1, Article 2, Article 3
etc.