Miles
Miles

Reputation: 39

if else function issue?

I have the following code with the if...else statement within a while loop.

$colour = array("50305A", "E33600", "DBDD02", "73BE58");
$nextcolr = next($colour);
 if ($nextcolr == FALSE)
 {
    reset($colour);
    echo current($colour);
 }
 else
 {
    echo next($colour);
 }

I can't work out why what ever is in the else statement isn't being executed, even if I switch the two statements and reverse the operator. Could anyone help me?

The entire while loop:

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

Upvotes: 0

Views: 136

Answers (4)

Bogdacutu
Bogdacutu

Reputation: 771

$colour = array("50305A", "E33600", "DBDD02", "73BE58");
while ... {
    $nextcolr = next($colour);
    if ($nextcolr === FALSE)
    {
        reset($colour);
    }
    echo current($colour);
}

is how your while loop should look like. If I am right, you are also defining $colour in the while loop, which might cause problems.

Upvotes: 3

migimaru
migimaru

Reputation: 229

The problem with your original while loop is that you never change the value of $nextcolr. Thus, it always remains FALSE and the else part never gets executed.

Upvotes: 0

Floern
Floern

Reputation: 33904

If you want to iterate this array multiple times, you could do it this way:

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

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

So you don't need this if-else block.

Upvotes: 1

Nemanja
Nemanja

Reputation: 1535

If all this is in the while loop, then you are re-declaring the array on each iteration, thus returning the array internal pointer to the beginning with each iteration.

Upvotes: 1

Related Questions