布尔输入翻转

时间:2014-01-16 21:07:45

标签: php

我在一个采用布尔输入的php脚本上得到了非常奇怪的结果。想法是数据需要存储为1或0,但php脚本的输入是真/假格式的字符串。看看这个:

<?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']); 

以下是此功能的输出:

false true

怎么会这样?谢谢你的任何建议。

编辑:解决方案:仍然不确定为什么我的输出被翻转,但基本问题是这样解决的:

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

感谢RocketHazmat。

1 个答案:

答案 0 :(得分:3)

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

见这个例子:

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

解释:

  

转换为布尔值时,以下值被视为FALSE:
  ...
  空字符串,字符串“0”
  ...
  每个其他值都被视为TRUE(包括任何资源)。

在您的情况下,$_POST['wants_sms']变量包含字符串"false";