Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 For Loop-在循环达到一定数量时执行某些操作_Php_Loops_For Loop - Fatal编程技术网

Php For Loop-在循环达到一定数量时执行某些操作

Php For Loop-在循环达到一定数量时执行某些操作,php,loops,for-loop,Php,Loops,For Loop,我正在为一家房地产网站做一个项目。我有一个函数,它使用for循环从数据库中获取每个可用属性的一行数据。通常情况下,这可以很好地工作,但是对于这个特定的站点,属性以三行的形式显示。这意味着输出3个属性后,我需要关闭当前div并打开另一个div以显示下一行3个属性。所以本质上,我需要循环识别,一旦它到达三行,就会像 </div><div class="new div"> 然后回到它停止的地方。我的for循环当前如下所示: function showFeaturedHom

我正在为一家房地产网站做一个项目。我有一个函数,它使用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);
函数showFeaturedHomes(){
$fetcher=$this->startDataFetch();
对于($idx=0;$idx<30;$idx++)
{   
$row=$fetcher->fetch_assoc();
如果(!$row)
打破
$retVal.=$this->showBlock($row);
}
返回($retVal);
我曾尝试使用模运算符(%)来检测它是否达到3的倍数,虽然它似乎有效,但它在执行任何其他操作之前输出关闭和打开div,因此我仍然处于相同的情况

我希望我已经清楚地了解了我要做的事情,如果不清楚,请随时向我询问更多信息。非常感谢您的帮助!谢谢!

function showFeaturedHomes(){
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);
}
回声“;/!!! $fetcher=$this->startDataFetch(); 对于($idx=0;$idx<30;$idx++) { 如果($idx!=0&&$idx%3==0)回显“”;/!!! $row=$fetcher->fetch_assoc(); 如果(!$row) 打破 $retVal.=$this->showBlock($row); } 回声“;/!!! 返回($retVal); }

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

$idx>0&$idx%3==0
?使用CSS可以轻松地完成此操作,只需我的2美分。嘿@mummercor这基本上是我之前尝试的,但不幸的是它输出了关闭div标记并在它输出任何其他内容之前打开新的div,然后像正常情况一样吐出数据。它不会像我试图实现的那样每隔三个属性执行一次。@Jezzabeanz,我知道这可以用CSS完成,但不幸的是,我不能用这种方式在这个特定的站点上执行,而不必花5个小时来重新设置其他属性的样式这个网站也是。这是一个现有的网站,我只需要让它与我们的IDX提要一起工作。嘿,Jacek,这几乎就是我之前测试的代码,不幸的是,我得到了相同的结果。但是,你让我注意到,我在showBlock函数之前回显了结束div,它基本上只是格式化了data从数据库中提取到html,然后输出到网站上。我没有回显,而是做了retVal。=而且效果很好,哈哈。我发誓,这是我挂断电话的最愚蠢的事情!非常感谢你的帮助!没问题!正如我所说:“我不知道您是否通过echo返回值,showBlock做了什么”。也许这是关键:)。向您致意,谢谢您的接受!