如何在循环的第 9 次迭代后回显?第一个 echo 只计算了 8 个项目

How to echo every after 9th iteration of a loop? First echo only counted 8 items

我的代码如下:

function portfolio_gallery() {
    global $conn;   
    $query = $conn->query("SELECT codename, namegroup, features, title, showimage FROM portfolio ORDER BY id DESC");

    if ($query->num_rows > 0) {
        // output data of each row
        echo '<div>';
        $i = 0; 
        while($row = $query->fetch_assoc()) {
            $i++;
            if ($row["showimage"]) {

               if($i % 9 == 0){
                     echo '</div><div>';
            }

              echo '<a class="imgpop" href="images/portfolio/large/'.$row["codename"].'.jpg" rel="'.$row["namegroup"].'" title="'.$row["title"].' - '.$row["features"].'"><img src="images/portfolio/thumb/'.$row["codename"].'.jpg" alt="'.$row["title"].'" width="348"/><span class="imgpop-caption">'.$row["title"].'</span></a>';
              }

        }
        echo '</div>';
    }
}

portfolio_gallery();

我想为循环的第 9 项之后的每个回显 </div><div> 但是每次我执行代码时,first 回显只发生在 8 项之后而不是9,但其余的是每 9 次。

你必须递增

$i

之后

if($i % 9 == 0)

在 while 循环结束时声明 $i = 1 并写入 $i++。

if ($query->num_rows > 0) {
    // output data of each row
    echo '<div>';
    $i = 1; // declare $i = 1 here
    while($row = $query->fetch_assoc()) {

        if ($row["showimage"]) {
           if($i % 9 == 1){ // 10 , 19 ,28
                 echo '</div><div>';
           }
           echo '<a class="imgpop" href="images/portfolio/large/'.$row["codename"].'.jpg" rel="'.$row["namegroup"].'" title="'.$row["title"].' - '.$row["features"].'"><img src="images/portfolio/thumb/'.$row["codename"].'.jpg" alt="'.$row["title"].'" width="348"/><span class="imgpop-caption">'.$row["title"].'</span></a>';
        }
        $i++; // increment at end of the loop
    }
    echo '</div>';
}

按照我计算出的语法示例进行操作

    <?php
    $j=0; 
    for($i=0;$i<=50;$i++)
    {
        if($j==9)
        {

            echo $j.'hioiiiiiii<br/>';  //echo "</div><div>";
         $j=-1; 
        }
       $j++;
    }

    ?>

请试试这个:)

<?php 
 function portfolio_gallery() {
    global $conn;   
    $query = $conn->query("SELECT codename, namegroup, features, title, showimage FROM portfolio ORDER BY id DESC");

if ($query->num_rows > 0) {
    // output data of each row
    echo '<div>';
    $i = 0;
    while($row = $query->fetch_assoc()) {
        if ($row["showimage"]) {

           if($i % 9 == 0){
                echo '</div><div>';
            }

            echo '<a class="imgpop" href="images/portfolio/large/'.$row["codename"].'.jpg" rel="'.$row["namegroup"].'" title="'.$row["title"].' - '.$row["features"].'"><img src="images/portfolio/thumb/'.$row["codename"].'.jpg" alt="'.$row["title"].'" width="348"/><span class="imgpop-caption">'.$row["title"].'</span></a>';
        }
    $i++;
    }
    echo '</div>';
}

}

我是通过修改条件解决的:

所以代替:if($i % 9 == 0) {...}

我用过:if($i!=0 && $i % 9 == 0) {...}

并且还将 $i++ 放在 while 循环的末尾。