how can one variable equal 2 things??

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View
I'm having a problem that is baffling me... say I set a session variable  
as so:

$_SESSION['temp'] = "default";

Now if I test the following two conditionals:

if($_SESSION['temp'] == "default")


if($_SESSION['temp'] == 0)

they both return TRUE.  I don't understand why this is... if anything, I  
would have thought testing if it == 1 would be a boolean true since the  
variable exists and is not NULL, but testing if == 1 returns FALSE.  
Thanks in advance.

Re: how can one variable equal 2 things??

When (non-numeric) strings are used in the context of a number (your ==
0 comparison above) they evaluate to zero.  Hence, both of your tests
evaluate to true.

Check out:

Re: how can one variable equal 2 things??

On 02/07/2005 23:34, Marcus wrote:


Quoted text here. Click to load it

This is due to implicit type conversion. When you use the equality (==)  
rather than strict equality (===) and compare two different types, the  
values are converted into something that can be compared in some  
meaningful way.

If you compare a string to a number, an attempt is made to convert that  
string to a number first. If the string starts with valid number data,  
then that will be the used value, otherwise the comparison will be  
against zero (0).

The string 'default' doesn't have anything resembling a number at its  
start, so it will be converted to zero. You then perform a comparison  
against literal zero, hence the expression evaluates to true.

See the type comparison page[1], as well as the section on converting  
strings to numbers[2], in the manual.


[1] <URL:

Michael Winter
Prefix subject with [News] before replying by e-mail.

Re: how can one variable equal 2 things??

Michael Winter wrote:
Quoted text here. Click to load it

Thank you both for the links and info, I enclosed my 0 in quotes and  
everything now works.

Site Timeline