Php 布尔输入翻转
我在接受布尔输入的php脚本上得到了非常奇怪的结果。其思想是数据需要存储为1或0,但php脚本的输入是一个true/false格式的字符串。看看这个:Php 布尔输入翻转,php,Php,我在接受布尔输入的php脚本上得到了非常奇怪的结果。其思想是数据需要存储为1或0,但php脚本的输入是一个true/false格式的字符串。看看这个: <?php function boolToBinary($str) { echo $_POST['wants_sms'] . " " . $str; die(); // posting this so that you can see what this function is su
<?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']);
这怎么可能???谢谢你的建议
编辑:解决方案:仍然不确定为什么我的输出被翻转,但基本问题是这样解决的:
if ($str === 'true') {
return 1;
} else {
return 0;
}
感谢RocketHazmat的帮助
请参见此示例:
var_dump((bool)“false”);//布尔(真)
解释如下:
转换为布尔值时,以下值被视为FALSE:…
空字符串和字符串“0”
…
其他所有值均视为真(包括任何资源)
在您的例子中,
$\u POST['wants\u sms']
变量包含一个字符串“false”
如果输入是字符串,为什么要像检查实际bool一样进行检查。它是布尔值还是非布尔值?POST值始终是字符串$\u POST['wants\u sms']
永远不会是布尔值。很可能是$\u POST['wants\u sms']
是字符串“true”
。试试这个返回$bool=='true'?1 : 0;
@Asok没什么奇怪的,他只是在调试脚本。他向我们展示了死亡前的价值观
。我真诚地怀疑你发布的代码能否产生你展示给我们的输出。你所做的只是(以一种迂回的方式)这样:echo$\u POST['wants\u sms']。" " . $_发布['wants_sms']
;真的没有任何方法可以输出false-true
@Asok啊,是的,我同意这一部分。发布的代码似乎不可能产生这样的结果,但奇怪的是他从不打字。他通过\u POST['want\u sms']
(它='false'
),然后在任何类型转换到bool之前回显变量true
。是的,我知道了。但所描述的输出最可能的原因可能是他在某处转换为布尔。他忘了在示例中提到这一点。相反,我认为他只是在将代码复制到堆栈溢出中时做得很糟糕。如果他没有看到“false-true”
,那么他可能不会在这里发布。我希望。。。
if ($str === 'true') {
return 1;
} else {
return 0;
}