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
>>   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 (
To unsubscribe, visit:

Reply via email to