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