if else功能问题?

时间:2011-08-05 15:37:26

标签: php while-loop if-statement

我在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>";
  }

4 个答案:

答案 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部分永远不会被执行。