布尔输入翻转

I'm getting really strange results on a php script that takes boolean input. The idea is that the data needs to be stored as either a 1 or a 0, but the input to the php script is a string in true/false format. Check this out:

<?php
    function boolToBinary($str) {
        echo $_POST['wants_sms'] . " " . $str;
        die();

        // posting this so that you can see what this function is supposed to do
        //    once it is debugged
        if ($str == true) {
            return 1;
        } else {
            return 0;
        }
    }

    $gets_sms = boolToBinary($_POST['wants_sms']); 

Here is the output from this function:

false true

How can that be??? Thanks for any advice.

EDIT: Solution: Still not sure why my output was flipped, but the fundamental problem is solved like this:

if ($str === 'true') {
    return 1;
} else {
    return 0;
}

Thanks to RocketHazmat for this.

http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting

see this example:

var_dump((bool) "false"); // bool(true)

And the explanations:

When converting to boolean, the following values are considered FALSE:
...
the empty string, and the string "0"
...
Every other value is considered TRUE (including any resource).

In your case the $_POST['wants_sms'] variable contains a string "false";