【问题标题】:if else function issue?如果其他功能问题?
【发布时间】:2011-10-20 23:54:09
【问题描述】:

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

【问题讨论】:

标签: php while-loop if-statement


【解决方案1】:
$colour = array("50305A", "E33600", "DBDD02", "73BE58");
while ... {
    $nextcolr = next($colour);
    if ($nextcolr === FALSE)
    {
        reset($colour);
    }
    echo current($colour);
}

是你的 while 循环应该是什么样子。如果我是对的,您还在 while 循环中定义了 $color,这可能会导致问题。

【讨论】:

  • 不,只有 if...else 语句在循环中。
  • 另外,您应该在第一个 if 语句中使用 === 而不是 ==。
【解决方案2】:

如果所有这些都在 while 循环中,那么您将在每次迭代时重新声明数组,从而将数组内部指针返回到每次迭代的开头。

【讨论】:

  • 不,只有 if...else 语句在循环中。
【解决方案3】:

如果你想多次迭代这个数组,你可以这样做:

 $colour = array("50305A", "E33600", "DBDD02", "73BE58");
 $i = 0;

 while ... {
    ...
    echo $colour[$i++ % count($colour)];
    ...
 }

所以你不需要这个 if-else 块。

【讨论】:

    【解决方案4】:

    你原来的 while 循环的问题是你永远不会改变 $nextcolr 的值。 因此,它始终保持为 FALSE,并且永远不会执行 else 部分。

    【讨论】:

      猜你喜欢
      • 2012-05-31
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多