【问题标题】:For Loop - Do Something Once Loop Hits Certain Number PHPFor 循环 - 一旦循环命中某个数字 PHP 就做某事
【发布时间】:2014-07-25 20:26:36
【问题描述】:

我正在开发一个房地产网站的项目。我有一个函数,它使用 for 循环从数据库中为每个可用属性获取一行数据。通常这可以完美运行,但对于这个特定站点,属性以三行显示。这意味着一旦我输出了 3 个属性,我需要关闭当前 div 并打开另一个 div 以显示下一行 3 个属性。所以基本上我需要循环在它达到三行后识别,回显类似

</div><div class="new div">

然后从中断的地方重新开始。我的 for 循环目前看起来像这样:

function showFeaturedHomes() {
    $fetcher = $this->startDataFetch();
    for ($idx = 0; $idx < 30; $idx++)
    {   
        $row = $fetcher->fetch_assoc();
        if (!$row)
            break;
        $retVal .= $this->showBlock($row);
    }
    return ($retVal);

我尝试使用模数运算符 (%) 来检测它是否达到 3 的倍数,虽然它似乎可以工作,但它会在它执行任何其他操作之前输出关闭和打开 div,所以我仍然最终同样的情况。

我希望我已经足够清楚我正在尝试做什么,但如果不是,请随时向我询问更多信息。非常感激您的帮忙!谢谢!

【问题讨论】:

  • $idx &gt; 0 &amp;&amp; $idx % 3 == 0?
  • 使用 CSS 可以更轻松地完成这项工作,只需我的 2 美分。
  • 嘿@Fabricator 这基本上是我之前尝试过的,但不幸的是它输出结束 div 标记并在输出其他任何内容之前打开新 div,然后正常吐出数据。它不会像我试图实现的那样每隔三个属性都这样做。
  • @Jezzabeanz,我知道这可以在 CSS 中完成,但不幸的是,我不能在这个特定网站上这样做,而不必花费 5 个小时重新设计其余部分的样式网站也是如此。这是一个现有的网站,我只需要让它与我们的 IDX 提要一起使用。

标签: php loops for-loop


【解决方案1】:
function showFeaturedHomes() {
    echo '<div class="new div">'; // !!!
    $fetcher = $this->startDataFetch();
    for ($idx = 0; $idx < 30; $idx++)
    {
        if ($idx != 0 && $idx % 3 == 0) echo '</div><div class="new div">'; // !!!
        $row = $fetcher->fetch_assoc();
        if (!$row)
            break;
        $retVal .= $this->showBlock($row);
    }
    echo '</div>'; // !!!
    return ($retVal);
}

我不知道您是否通过 echo 返回值以及 showBlock 做了什么,但这里的想法很清楚 :)。你很接近模数!最好的问候!

【讨论】:

  • 嘿 Jacek,这几乎是我之前测试的代码,不幸的是我得到了相同的结果。但是,您让我注意到了这样一个事实,即我在 showBlock 函数之前回显了结束 div,该函数本质上只是将从数据库中提取的数据格式化为 html,然后可以在站点上输出。而不是 echo 我只是做了 retVal .=
    并且效果很好,哈哈。我发誓,这总是最愚蠢的事情,我发誓!非常感谢您的帮助!
  • 没问题!正如我所说:“我不知道您是否通过 echo 返回值以及 showBlock 做了什么”。也许这是关键:)。最好的问候,谢谢接受!
猜你喜欢
  • 1970-01-01
  • 2014-07-24
  • 1970-01-01
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-27
  • 2018-08-03
相关资源
最近更新 更多