我在一个采用布尔输入的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。
答案 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"
;