-1

私は次の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++.' - j='.$j.' | ';
                echo $row['color'].' - k='.$k++.' - j='.$j.'<br />';

            }

        }
    }
}

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

John - k=1 - j=1 | Blue - k=2 - j=1
John - k=3 - j=2 | Blue - k=4 -  j=2
John - k=5 - j=3 | Blue - k=6 -  j=3
Paul - k=7 - j=1 | Green - k=8 -  j=1
Paul - k=9 - j=2 | Green - k=10 -  j=2
Paul - k=11 - j=3 | Green - k=12 -  j=3
George - k=13 - j=1 | Red - k=14 -  j=1
George - k=15 - j=2 | Red - k=16 -  j=2
George - k=17 - j=3 | Red - k=18 -  j=3

これを生成したいと思います:

John - k=1 - j=1 | Blue - k=1 - j=1
John - k=2 - j=2 | Blue - k=2 -  j=2
John - k=3 - j=3 | Blue - k=3 -  j=3
Paul - k=4 - j=1 | Green - k=4 -  j=1
Paul - k=5 - j=2 | Green - k=5 -  j=2
Paul - k=6 - j=3 | Green - k=6 -  j=3
George - k=7 - j=1 | Red - k=8 -  j=1
George - k=8 - j=2 | Red - k=8 -  j=2
George - k=9 - j=3 | Red - k=9 -  j=3
4

4 に答える 4

1

両方のechoステートメントには があり$k++、これによりインクリメントされます。基本的に、実行ごとに $k に 2 を追加します。

echo $row['name'].' - k='.$k.' - j='.$j.' | ';
echo $row['color'].' - k='.$k.' - j='.$j.'<br />';
$k++;

やりたいことをやればいい。

于 2012-06-22T17:18:17.610 に答える
1
for ($j=1; $j <= 3; $j++)
{
    echo $row['name'].' - k='.$k.' - j='.$j.' | ';
    echo $row['color'].' - k='.$k.' - j='.$j.'<br />';
    $k++;
}
于 2012-06-22T17:18:28.593 に答える
1

なぜあなたの状態ではIDないのですか?WHERESELECT

$k = 1;
for ($i = 0; $i < 5; $i++) {
    $stmt = $db->query('SELECT * FROM services_main WHERE ID = ' . $i);
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        for ($j = 1; $j <= 3; $j++) {
            echo $row['name'].' - k=' . $k . ' - j=' . $j . ' | ';
            echo $row['color'] . ' - k=' . $k++ . ' - j=' . $j . '<br />';
        }
    }
}
于 2012-06-22T17:23:40.730 に答える
0

問題は、「$k++」を作成するたびに $k 値をインクリメントし、for ループのラウンドごとに 2 回値を増やしていることです。次のように変更してみてください。

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