【问题标题】:php loop array through separate array's while loopphp循环数组通过单独数组的while循环
【发布时间】:2019-04-19 01:18:48
【问题描述】:

我已经搜索了大约 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 循环中以在每一行上交替,但我想看看这是否可能。我经常使用它,我更愿意创建一个函数来处理它并为其提供我想要的多种颜色。

谢谢。

【问题讨论】:

  • 我希望你对mysql_fetch_row()不是认真的。这些函数已经过时了十年,甚至已经 3 年没有包含在 PHP 中了。
  • 很遗憾我的公司还在使用 v5.2.6
  • 这是不负责任的犯罪行为。无论如何,这仍然意味着您可以访问 PDO。
  • 用 CSS 代替会更好。 stackoverflow.com/questions/3084261/…(那里的最佳答案使用 jQuery,这不是必需的。)
  • @miken32 我只是使用我可用的东西,并根据我发现在这里工作的其他脚本来学习,以解决我在工作流程中遇到的问题。不是真正的程序员。

标签: php mysql arrays while-loop


【解决方案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>";
}

【讨论】:

  • 简单而完美!甚至不需要单独的功能。非常感谢!
猜你喜欢
  • 2012-02-21
  • 1970-01-01
  • 2018-02-09
  • 2020-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
相关资源
最近更新 更多