我如何打破 foreach 语句,回显其他内容然后继续

Posted

技术标签:

【中文标题】我如何打破 foreach 语句,回显其他内容然后继续【英文标题】:How can i break a foreach statement, echo something else and then continue 【发布时间】:2012-09-02 10:33:20 【问题描述】:

我从 MSQL 数据库中获取了两个不同的数组数据数组,第一个数组来自我的博客文章表,包含 15 行/项目,第二个数组来自广告表,包含 3 行/项目。我想从博客文章表(第一个数组)中获取前 5 组数据,然后从广告表(第二个数组)中获取 1(一个)并从我在第一个数组中停止的位置继续,另外 5 个项目和一个来自第一个数组,就这样。 请帮我想出如何做到这一点的php代码。 谢谢。

【问题讨论】:

您可以先告诉我们您使用的编程语言 请我需要 PHP 代码来做到这一点 What have you tried? foreach blog_array where i%5 == 0 etc. etc. 你的 tut 书在哪里? 【参考方案1】:

代码假定数组从0开始索引。

$i = 0;
foreach ($posts as $post) 
  // Output and/or otherwise process $post
  if (++$i % 5 == 0) 
    $advertisements[$i / 5 - 1] // Output and/or process advertisement
  

【讨论】:

感谢您的帮助,但我尝试了上面的脚本,它按预期从帖子数组输出 5,现在的问题是它没有回显广告数组的数组值,当我使用 foreach对于广告数组,它会在继续发布数组之前打印所有广告内容,请问我该如何解决这个问题??【参考方案2】:

使用模数。

您将使用mssql_num_rows 进行计数,然后迭代一个计数器,例如$i

然后在 foreach($rows)..:

$i = 0; $count = mssql_num_rows($result);
foreach($rows as $blog) 
    if($i > 0 && $i++ % 5 == 0) 
        $advert = array_shift($adverts_array);
        // process $advert
    
    // process $blog here

【讨论】:

如果您还希望以添加开头,请删除 $i > 0 子句 感谢您的帮助,但我尝试了上面的脚本,它按预期从帖子数组中输出 5,现在的问题是它没有回显广告数组的数组值,当我使用 foreach 时对于广告数组,它会在继续发布数组之前打印所有广告内容,请问我该如何解决这个问题?? 无法从您提供的信息中说出原因......但是您有两个结果集需要迭代,对吗?然后简单地处理第一个广告@count 5,第二个广告@count 10 等等。这就是为什么评论说“拿一个(!)”

以上是关于我如何打破 foreach 语句,回显其他内容然后继续的主要内容,如果未能解决你的问题,请参考以下文章

打破parallel.foreach?

打破forloop但在switch语句php中

如何在 TypeScript 中打破 ForEach 循环

在WordPress中加载模板而不回显它

如何在 laravel 刀片视图中打破 foreach 循环?

有啥办法可以打破 foreach 循环?