0

私は次のphpコードを持っています:

    $k=1;
    for($i=0; $i < 5; $i++)
    {
        $stmt = $db->query('SELECT * FROM services_main');
        while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

            if ($row['ID'] == $i) {

                for($j=1; $j <= 3; $j++)
                {
                    echo $row['name'].' - k='.$k++.'<br />';
                }

            }
        }
    }

このコードはこれを生成します:

    John - k=1
    John - k=2
    John - k=3
    Paul - k=4
    Paul - k=5
    Paul - k=6
    George - k=7
    George - k=8
    George - k=9

私がやろうとしていることは、これを生成させます:

    John - k=1
    John - k=1
    John - k=1
    Paul - k=2
    Paul - k=2
    Paul - k=2
    George - k=3
    George - k=3
    George - k=3

1行ごとにインクリメントするのではなく、グループごとにkをインクリメントする方法がわかりません。

よろしくお願いします!

4

3 に答える 3

0

ループのk++外側に置きます。while

$k=1;
for($i=0; $i < 5; $i++)
{
    $stmt = $db->query('SELECT * FROM services_main');
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

        if ($row['ID'] == $i) {

            for($j=1; $j <= 3; $j++)
            {
                echo $row['name'].' - k='.$k.'<br />';
            }

        }
    }
    $k++;
}
于 2012-06-22T16:33:40.613 に答える
0

内側の「for」ループを通過するたびに$kをインクリメントする代わりに、「while」ループの反復ごとに1回インクリメントします。

for($j=1; $j <= 3; $j++)
{
    echo $row['name'].' - k='.$k.'<br />';
}
$k++;
于 2012-06-22T16:33:52.573 に答える
0

これを置き換えます:

for($j=1; $j <= 3; $j++)
            {
                echo $row['name'].' - k='.$k++.'<br />';
            }

これとともに

for($j=1; $j <= 3; $j++)
            {
                echo $row['name'].' - k='.$k.'<br />';
            }
$k++;
于 2012-06-22T16:34:08.960 に答える