Re: Basic switch statement

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Robert Cummings wrote:
> steve_r wrote:
>> I'm new to programming, drive a truck in the day, now taking night
>> courses
>> to get a better job for my family.  Please bear with me if this is a dumb
>> question, I don't have much experience.
>>
>> I'm taking a night class in HTML and PHP and can't figure out a
>> problem and
>> can't find the answer in the book for the course ("Beginning PHP5" by
>> Wrox
>> Press), on the switch manual page on php.net, or in any postings to this
>> mailing list.
>>
>> I'm trying to pass a value to a simple integer to a function, and then
>> use
>> that value in a switch statement.  The problem I'm having is that
>> regardless
>> of the value of 'val', the first case statement always executes.  Even
>> if I
>> put '$val = 0' right before the case statement, the first case statement
>> executes.  The syntax looks correct based on the php.net man page for
>> switch
>> and from the user examples.  It also matches the example in the book.
>>
>> function check_it2($val) {
>>     echo gettype($val);
>>     switch($val) {
>>         case($val > 0 ):
>>             echo "Switch greater than 0";
>>             $diff_obj = 1;
>>             break;
>>         case($val < 0 ):
>>             echo "Less than 0";
>>             $diff_obj = -1;
>>             break;
>>         default:
>>             echo "Equal to 0";
>>             $diff_obj = 0;
>>     }
>>     print("Here's \$diff_obj2 in the function: " . $diff_obj);
>>     return $diff_obj;
>> }
> 
> You're a tad confused :)
> 
> Q: What is the result of $val > 0?
> A: false.
> 
> Q: What is the value of $val?
> A: 0
> 
> Q: Is 0 equivalent to false?
> A: Yes!
> 
> Use an if statement for this kind of logic.

This is a fantastic example of false logic and an easy pitfall.

in fact this would make a great interview question!

to expand a little on the various scenarios (just for clarity, Rob is right)

$val = 1;
1 > 0 equates to TRUE
is 1 equivalent to TRUE : YES

$val = 0;
0 > 0 equates to FALSE
is 0 equivalent to FALSE : YES

$val = -1;
-1 > 0 equates to FALSE
is -1 equivalent to FALSE: YES

so no matter what value you set $val to; it's always true.

lovely

Regards!


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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux