我在while循环中使用if ... else语句时有以下代码。
$colour = array("50305A", "E33600", "DBDD02", "73BE58");
$nextcolr = next($colour);
if ($nextcolr == FALSE)
{
reset($colour);
echo current($colour);
}
else
{
echo next($colour);
}
我无法理解为什么else语句中的内容没有被执行,即使我切换了两个语句并反转了运算符。有谁可以帮助我?
整个while循环:
while($row = mysql_fetch_array($result))
{
echo "by <a href='/neuro/profile.php?userid=$row[MemberID]'>" . $row['FirstName'] . " " . $row['LastName'] . "</a> on " . $row['Timestamp'] . " | " . $row['NumberOfComments'] . " comments.";
echo "<div id='blog' style='background-color:#";
if ($nextcolr == FALSE)
{
reset($colour);
echo current($colour);
}
else
{
echo next($colour);
}
echo "'><a href='blog.php?threadid=" . $row['tID'] . "'>" . $row['Title'] . "</a></div>";
}
答案 0 :(得分:3)
$colour = array("50305A", "E33600", "DBDD02", "73BE58");
while ... {
$nextcolr = next($colour);
if ($nextcolr === FALSE)
{
reset($colour);
}
echo current($colour);
}
是你的while循环应该是什么样子。如果我是对的,你也在while循环中定义$ color,这可能会导致问题。
答案 1 :(得分:1)
如果所有这些都在while循环中,那么您将在每次迭代时重新声明数组,从而在每次迭代时将数组内部指针返回到开头。
答案 2 :(得分:1)
如果你想多次迭代这个数组,你可以这样做:
$colour = array("50305A", "E33600", "DBDD02", "73BE58");
$i = 0;
while ... {
...
echo $colour[$i++ % count($colour)];
...
}
所以你不需要这个if-else块。
答案 3 :(得分:0)
原始while循环的问题是你永远不会改变$ nextcolr的值。 因此,它始终保持为FALSE,而else部分永远不会被执行。