Micah Gersten wrote:
> Jochem Maas wrote:
>> switch (true) {
>>      case ($x === $y):
>>              // something
>>              break;
>>
>>      case ($a != $b):
>>              // something
>>              break;
>>
>>      case (myFunc()):
>>              // something
>>              break;
>>
>>      case ($my->getChild()->hasEatenBeans()):
>>              // something
>>              break;
>> }
>>
>> evil ... but it works.
>>
>>
>>   
>>   
> This is a misuse of the switch statement.  Switch is meant to compare
> values to a single variable as stated on the manual page:
> http://us2.php.net/switch
> 
> Thank you,
> Micah Gersten
> onShore Networks
> Internal Developer
> http://www.onshore.com
> 

Actually, if you read the link you posted, the first paragraph: "In many
occasions, you may want to compare the same variable (or expression)
with many different values, and execute a different piece of code
depending on which value it equals to. This is exactly what the switch
statement is for."

Notice the (or expression), which I believe true is one.

Also, down the page: "The case expression may be any expression that
evaluates to a simple type, that is, integer or floating-point numbers
and strings. Arrays or objects cannot be used here unless they are
dereferenced to a simple type."

I believe boolean is also one.

I would point out however that the switch does a loose comparison, so
this would be different:

switch (true) {
        case (strpos("shawn", "s")):
        //actually returns 0 so is false
        break;

        case (strpos("shawn", "s") !== false):
        //returns true
        break;
}

-- 
Thanks!
-Shawn
http://www.spidean.com

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to