views:

395

answers:

3

How does php cast boolean variables?

I was trying to save a boolean value to an array:

$result["Users"]["is_login"] = true;

but when I use debug the is_login value is blank. and when I do conditionals like:

if($result["Users"]["is_login"])

the conditions are always false.

Then i tried doing this:

$result["Users"]["is_login"] = "true";

and it worked.

It's not much of a big deal but when I'm returning boolean values from functions i still have to convert them to strings.

+4  A: 

there is no cast

the

if($result["Users"]["is_login"])

should work. can you try to use var_dump($result["Users"]["is_login"]); to make sure the variable has been set properly.

you can check is a variable is set or not by using the isset (manual) function.

Also you can find here how PHP evaluate the booleans:

When converting to boolean, the following values are considered FALSE:

the boolean FALSE itself
the integer 0 (zero)
the float 0.0 (zero)
the empty string, and the string "0"
an array with zero elements
an object with zero member variables (PHP 4 only)
the special type NULL (including unset variables)
SimpleXML objects created from empty tags
Every other value is considered TRUE (including any resource).
RageZ
A: 

No casting happens in your example.
Your problem is likely somewhere else.

Would you mind to share a more complete piece of code?

Carlos Lima
Should be a comment
Itay Moav
A: 

Try:


if((bool)$result["Users"]["is_login"] == true)
{
    // do something
}

.

And reply to one of your encounter:

but when I use debug the is_login value is blank. and when I do conditionals like:

if($result["Users"]["is_login"])

since your return value is boolean value true, in PHP it doesn't have a representation for it, therefore appear as empty (mainwhile, if the value is a boolean false, then you'll see a 0

rockacola
Au contraire, when output the boolean `false` will be blank and `true` will be `1`.
deceze