当前位置: 首页 > 知识库问答 >
问题:

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

席俊驰
2023-03-14

对于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(); }

输出奇怪地以一系列的方式重复

“900,900,901,900,901,902,900,901,900,901,900 2,903,900...”

这意味着它将返回到每个循环后的第一个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

下面是整个脚本:

http://pastebin.com/zhm3ub6n

它实际上是simplehtmldom脚本中包含的slashdot刮取示例的稍微修改的版本。没什么特别的.

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

共有1个答案

邴烨
2023-03-14

它必须在您的其余代码中,因为这工作很好。请分享更多的脚本。

看起来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/>";
    }
 }

这将产生您所描述的输出

编辑

就我个人而言,我会添加scraping_slashdot函数,一个变量$ret的重置,以防万一。

例如:$ret=array();

当前,$output的回显位于循环中,它创建如下所示的输出:

Article 1
Article 1, Article 2
Article 1, Article 2, Article 3
etc.

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

 类似资料:
  • 问题内容: 这个问题不太可能对将来的访客有所帮助;它仅与较小的地理区域,特定的时间段或极为狭窄的情况(通常不适用于Internet的全球受众)有关。要获得使该问题更广泛适用的帮助,请访问帮助中心。 7年前关闭。 例如: doc1 = 8 doc2 = 7 doc3 = 1 我想计算$ value,所以结果是8 + 7 + 1 =16。我该怎么办? 谢谢。 问题答案:

  • 问题内容: 我正在运行此数据库调用以获取多维数组,我试图获取每个数组的键,但是当我尝试将其显示为空白或数组时。 这是我的PHP循环遍历: 另外,当我运行一个仅将数组吐出的测试时,这就是结果,我想要呈现的是 [费城] 问题答案: 您可以这样访问数组键:

  • 问题内容: 我第一次不了解PHP。我一直在脚本中使用for循环,while循环,foreach循环。我想知道 哪一个性能更好? 选择循环的标准是什么? 当我们在另一个循环中循环时应该使用哪个? 我一直想知道要使用哪个循环的代码。 很明显,我可以使用while编写上面的代码。希望有人能帮助我找出哪个循环更适合使用。 问题答案: 哪一个性能更好? 没关系 选择循环的标准是什么? 如果只需要遍历对象或数

  • 问题内容: 我正在尝试使用for循环在数组内创建一个数组-这是我的代码: 不幸的是,这给了我一个 “解析错误:语法错误,意外的T_CONSTANT_ENCAPSED_STRING,预期为’)’” 对于该行: 对于出了什么问题,我有些茫然-非常感谢您的帮助。$ clients是在其他地方定义的,所以这不是问题。 问题答案: 那是无效的语法。您必须首先构建数组的“父”部分。然后使用foreach循环添

  • foreach循环遍历列表值并将控制变量(var)依次设置为列表的每个元素 - 语法 (Syntax) Perl编程语言中foreach循环的语法是 - foreach var (list) { ... } 流程图 (Flow Diagram) 例子 (Example) #!/usr/local/bin/perl @list = (2, 20, 30, 40, 50); # foreach lo

  • 问题内容: 我有这样的1,2,3产品ID 我该如何在for循环回显中使用此代码设置格式,请问还有其他方法吗 问题答案: