Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.php > #12643
| From | Norman Peelman <npeelman@cfl.rr.com> |
|---|---|
| Newsgroups | comp.lang.php |
| Subject | Re: Switch question |
| Date | 2014-01-13 06:53 -0500 |
| Organization | A noiseless patient Spider |
| Message-ID | <lb0k3m$ln$1@dont-email.me> (permalink) |
| References | (1 earlier) <lauiq3$mdc$1@dont-email.me> <1poy7ts4hdy96$.188q6380cr9m0.dlg@40tude.net> <lav06t$9ql$1@dont-email.me> <lavoe4$717$1@dont-email.me> <lavov7$9t1$1@dont-email.me> |
On 01/12/2014 11:10 PM, Norman Peelman wrote:
> On 01/12/2014 11:01 PM, Norman Peelman wrote:
>> On 01/12/2014 04:07 PM, Norman Peelman wrote:
>>> On 01/12/2014 12:26 PM, richard wrote:
>>>> On Sun, 12 Jan 2014 17:18:59 +0000 (UTC), Denis McMahon wrote:
>>>>
>>>>> On Sun, 12 Jan 2014 11:48:48 -0500, richard wrote:
>>>>>
>>>>>> The manual for PHP switch shows no examples on how to use multiple
>>>>>> values for the same case.
>>>>>> In liberty basic I would use the following:
>>>>>> case 1,2,3,4 case "A","B","C"
>>>>>>
>>>>>> What is the equivelant in PHP?
>>>>>>
>>>
>>> PHP does not support that method directly as you have discovered.
>>>
>>>>>> I use the following code to acquire a value:
>>>>>> $value=$_GET['v'];
>>>>>> switch ($value){
>>>>>> case "A";
>>>>>
>>>
>>> Under normal circumstances we know that $value is a string, therefor
>>> what is actually in $value is the question. If the code for *case "A"*
>>> is not being executed then $value <> A.
>>>
>>>>> This is f'd up, despite what you may believe ":" is not the same as
>>>>> ";"
>>>>>
>>>>>> echo "Does Not Work!";
>>>>>> case A:
>>>>>> echo "Does Not Work!";
>>>>>> }
>>>>>>
>>>>>> So what is the proper way to ensure the proper case is found
>>>>>> correctly?
>>>>>
>>>
>>> The example above would indicate that there is a CONSTANT A that
>>> $value is compared against. You are mixing problems.
>>>
>>>
>>>>> You seem to have missed the paragraph beginning "It is important to
>>>>> understand how the switch statement is executed in order to avoid
>>>>> mistakes." on the manual page. This paragraph answers your question.
>>>>
>>>> for once I get to say, to you, >>>> RTFM!
>>>> : is used for constants.
>>>> ; is used for strings.
>>>>
>>>
>>> Not true, the online manual simply indicates that a ; may be used
>>> instead of a : period. Don't know why, I'd never do it that way - seems
>>> to add confusion.
>>>
>>>> As usuaul, I find the answer to my question.
>>>> Instead of commas, use ||.
>>>>
>>>> case 1 || 2 || 3:
>>>> case "A" || "B" || "C";
>>>>
>>>> The syntax is correct!
>>>>
>>>
>>> There is nothing wrong with that syntax. It is merely an expression
>>> that ends up being true or not. Using : or ; for either case works as
>>> tested.
>>>
>>>
>>
>> Doh! scratch that... doesn't work.
>>
>
> And yes I know why. :) It returns a boolean value. 0 does not match
> but 4 does, "D" also matches. Ha, good catch Denis and Doug!
>
I should state that because *1 || 2 || 3* and *"A" || "B" || "C"*
will return a boolean (TRUE) value that:
0 (FALSE) fails to match as expected, any other number is considered TRUE.
"" and "0" (FALSE) fails to match as expected, any other non-empty
string is considered TRUE.
In reality the CASE expression hasn't been matched at all - not even
when $value contains 1,2 or 3 or "A","B" or "C". Only the boolean state
of TRUE or FALSE has been compared.
Richard, you will need to use the standard SWITCH...CASE syntax. I
overlooked that simple concept even as I typed it in my response.
--
Norman
Registered Linux user #461062
-Have you been to www.php.net yet?-
Back to comp.lang.php | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Switch question richard <noreply@example.com> - 2014-01-12 11:48 -0500
Re: Switch question Denis McMahon <denismfmcmahon@gmail.com> - 2014-01-12 17:18 +0000
Re: Switch question richard <noreply@example.com> - 2014-01-12 12:26 -0500
Re: Switch question Luuk <luuk@invalid.lan> - 2014-01-12 18:44 +0100
Re: Switch question Evan Platt <evan@theobvious.espphotography.com.invalid> - 2014-01-12 10:47 -0800
Re: Switch question Denis McMahon <denismfmcmahon@gmail.com> - 2014-01-12 23:15 +0000
Re: Switch question Norman Peelman <npeelman@cfl.rr.com> - 2014-01-12 16:07 -0500
Re: Switch question Norman Peelman <npeelman@cfl.rr.com> - 2014-01-12 23:01 -0500
Re: Switch question Norman Peelman <npeelman@cfl.rr.com> - 2014-01-12 23:10 -0500
Re: Switch question Norman Peelman <npeelman@cfl.rr.com> - 2014-01-13 06:53 -0500
Re: Switch question Denis McMahon <denismfmcmahon@gmail.com> - 2014-01-13 13:11 +0000
Re: Switch question Denis McMahon <denismfmcmahon@gmail.com> - 2014-01-12 23:14 +0000
Re: Switch question Doug Miller <doug_at_milmac_dot_com@example.com> - 2014-01-13 01:40 +0000
Re: Switch question The Natural Philosopher <tnp@invalid.invalid> - 2014-01-13 01:54 +0000
Re: Switch question Doug Miller <doug_at_milmac_dot_com@example.com> - 2014-01-13 03:19 +0000
Re: Switch question Arno Welzel <usenet@arnowelzel.de> - 2014-01-13 15:34 +0100
Re: Switch question Denis McMahon <denismfmcmahon@gmail.com> - 2014-01-12 17:22 +0000
Re: Switch question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-01-12 23:36 +0100
Re: Switch question Luuk <luuk@invalid.lan> - 2014-01-12 18:21 +0100
Re: Switch question "Beauregard T. Shagnasty" <a.nony.mous@example.invalid> - 2014-01-12 17:34 +0000
Re: Switch question Arno Welzel <usenet@arnowelzel.de> - 2014-01-13 15:32 +0100
csiph-web