需要使用特定分组循环遍历多个语句

时间:2012-06-22 17:15:29

标签: php

我有以下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 个答案:

答案 0 :(得分:1)

echo语句都有$k++,它会增加它 - 基本上,每次运行时你都会加2到$ k。

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

应该做你想做的事。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

为什么ID不是WHERE的{​​{1}}条件?

SELECT

答案 3 :(得分:0)

问题是每当你制作&#34; $ k ++&#34;你增加$ k值,并且你在for循环中每轮增加两次,尝试改为:

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