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