通过单独的数组的while循环的php循环数组

时间:2018-11-15 21:07:11

标签: php mysql arrays while-loop

我已经搜索了大约2个小时,但没有发现任何与我要执行的操作完全匹配的内容。可能不可能,但是我认为自己是php的基础。

我有一个运行MySQL查询并使用该数据创建HTML电子邮件的php脚本。将结果放入while循环中,该循环用于迭代和创建n个结果行的HTML表行。我的主要目标是在MySQL结果数组之外使用一个单独的数组,其中每行包含一个交替的bgcolor,并在MySQL结果数组中放置一个函数,该函数在我选择的n种颜色之间交替。我完全愿意接受其他解决方案,以使其尽可能少地使用代码。

这是不完整的无效代码的基本外观(使用伪造的颜色名称以提高可读性):

$shade = array("red","blue","green");
$sql1 = "MySQL Query";
$sql1Handle = MySqlQuery($sql1,$DBLink);
while($sql1Data = mysql_fetch_row($sql1Handle))
{
    $htmlText .= "<tr bgcolor = \"".$shade[0]."\"><td>".$sql1Data[0]."</td><td>".$sql1Data[1]."</td><td>".$sql1Data[2]."</td></tr>";
}

预期的彩色结果将是(如果MySQL结果有7行):

红色行 $ sql1Data [0] $ sql1Data [1] $ sql1Data [2]
蓝色$ sql1Data [0] $ sql1Data [1] $ sql1Data [2]
绿色$ sql1Data [0] $ sql1Data [1] $ sql1Data [2]
红色$ sql1Data [0] $ sql1Data [1] $ sql1Data [2]
蓝色$ sql1Data [0] $ sql1Data [1] $ sql1Data [2]
绿色$ sql1Data [0] $ sql1Data [1] $ sql1Data [2]
红色$ sql1Data [0] $ sql1Data [1] $ sql1Data [2]

我知道我可以完成将两个或多个变量声明为颜色并将if语句放入while循环内以在每一行交替的方式来完成此任务,但是我想看看是否可行。我经常使用它,我更喜欢创建一个函数来处理此问题,并为其提供所需的多种颜色。

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用简单的计数器,并使用mod运算符%在它们之间循环,每次使用$current++移至下一个阴影...

$shade = array("red","blue","green");
// Which is the current shade to use
$current = 0;
// Store count so that it is dynamic
$shadeCount = count($shade);
$sql1 = "MySQL Query";
$sql1Handle = MySqlQuery($sql1,$DBLink);
while($sql1Data = mysql_fetch_row($sql1Handle))
{
    $htmlText .= "<tr bgcolor = \"".$shade[$current++ % $shadeCount]."\"><td>".$sql1Data[0]."</td><td>".$sql1Data[1]."</td><td>".$sql1Data[2]."</td></tr>";
}