From: Nathan Rixham on
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!

From: Robert Cummings on
Nathan Rixham wrote:
> 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.

Fail on that last one. -1 is not equivalent to FALSE :B

Cheers,
Rob.
--
http://www.interjinn.com
Application and Templating Framework for PHP
From: Nathan Rixham on
Robert Cummings wrote:
> Nathan Rixham wrote:
>> 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.
>
> Fail on that last one. -1 is not equivalent to FALSE :B
>

well that's one job I'm not getting :p

cheers for the picking that one up Rob
From: Robert Cummings on
Nathan Rixham wrote:
> Robert Cummings wrote:
>> Nathan Rixham wrote:
>>> 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.
>> Fail on that last one. -1 is not equivalent to FALSE :B
>>
>
> well that's one job I'm not getting :p

Well you DID get 66.7%. I've met "coders" that would stare at the answer
and still not understand :D

Cheers,
Rob.
--
http://www.interjinn.com
Application and Templating Framework for PHP
From: Nathan Rixham on
Robert Cummings wrote:
> Nathan Rixham wrote:
>> Robert Cummings wrote:
>>> Nathan Rixham wrote:
>>>> Robert Cummings wrote:
>>>>> steve_r wrote:
>>>>>> I'm new to programming
>>>>>>
>>>>>> function check_it2($val) {
>>>>>> echo gettype($val);
>>>>>> switch($val) {
>>>>>> case($val > 0 ):
>>>>>> echo "Switch greater than 0";
>>>>>>
>>>>> 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.
>>> Fail on that last one. -1 is not equivalent to FALSE :B
>>>
>>
>> well that's one job I'm not getting :p
>
> Well you DID get 66.7%. I've met "coders" that would stare at the answer
> and still not understand :D

the travesty is that I spent most of yesterday on trains brushing up on
/ studying formal logic!