我已经搜索了大约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循环内以在每一行交替的方式来完成此任务,但是我想看看是否可行。我经常使用它,我更喜欢创建一个函数来处理此问题,并为其提供所需的多种颜色。

谢谢。

最佳答案

您可以使用简单的计数器并使用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>";
}

10-07 17:49