From: tedd > At 1:50 PM -0400 9/24/10, Andy McKenzie wrote: >>Hey folks, >> >> Here's the deal. I have the following code: >> >>if($col_vals[$i][$val['column']] == $search_result[0][$col]) >> { echo ' selected="selected"'; } >>elseif($val['default'] == $col_vals[$i][$val['column']]) >> { echo ' selected="selected"'; } >> >> It's supposed to check whether there's a value in the db >>($search_result[0][$col]) that matches the current column value, and >>if not, check whether the default matches it. It does that, sort of. >>In fact, both statements trigger, which I would have said wasn't >>possible. >> >> So the question is: what causes both parts of an if/elseif >>statement to trigger? As far as I can see my punctuation is correct, >>and I've confirmed through debugging statements that all the values >>are what I expect, so how do I make the elseif stop acting like >>another if? Or, alternatively, have I just misunderstood all this >>time what the if/elseif statement does? > > Alex: > > I am not in the majority when I say for conditions where you have > more than two options use a switch control and not an elseif. > > In 40+ years of programming, I have never used elseif because the > control confuses me. It is *much* easier for me to use, understand, > and document a switch statement than an elseif. > > Your mileage may vary. A switch works when a single test can dispatch all possible branches. If you have a series of tests where each looks for a different subset of conditions, you need an elseif. Bob McConnell -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php