这是一个简单的例子:
echo 3==3; // echoes 1
echo 3==2; // should echo 0, yet echoes nothing
我注意到这一点,因为我正在设计一个需要复选框的表单。勾选时,复选框在未选中时传递值1,而不是按照预期传递值0,它不会传递任何值;一个未定义的布尔值可以这么说。
我尝试使用以下代码解决此问题:
$myBool = isset($_POST['myCheckbox']);
但是,这似乎也不起作用。
将复选框值传递给$myBool
的一个解决方案是做一些if-else条件,但我想要一个更简洁的解决方案。这可能吗?
答案 0 :(得分:1)
在PHP中,每个决策make语句都返回一个布尔值,无论是true还是false。所以,echo 3==3;
是一个真实的陈述,这就是为什么它返回1而echo 3==2;
是一个假陈述,这就是为什么它什么都不返回。
但是如果要回显出关联的false整数(即0),那么可以使用类型转换。像:
echo (int)(3 == 2);
它将打印出0。
答案 1 :(得分:0)
测试代码
// http://php.net/manual/en/language.operators.comparison.php
echo 3==3;
echo "<br>---------------<br>";
echo 3==2;
echo "<br>---------------<br>";
var_dump(3==3);
echo "<br>---------------<br>";
var_dump(3==2);
输出
1
---------------
---------------
boolean true
---------------
boolean false
原因是没有输出是你试图回应布尔值&#34; false&#34;,它什么都不打印。
答案 2 :(得分:0)
语句3 == 2
的计算结果为false,并且如示例部分中echo
的PHP文档中所述,运行echo false
不会打印任何内容,因为它&#39;从技术上讲,它不是一种功能。但是,您可以使用var_dump
代替。
echo 3 == 2; // no output
echo false; // no output
var_dump(3 == 2); // outputs bool(false)
var_dump(false); // outputs bool(false)
答案 3 :(得分:0)
the documentation on strings中section about casting to string中提供了关于为什么评估为echo false;
的语句打印空字符串的问题的实际原因:
转换为字符串
可以使用(string)强制转换或者将值转换为字符串 strval()函数。 字符串转换自动完成 表达式的范围,需要字符串。这发生在 使用echo或print函数,或将变量与a进行比较时 string。类型和类型杂耍的部分将成为 以下更清楚。另请参见settype()函数。
布尔值TRUE值转换为字符串“1”。 布尔值为FALSE 转换为“”(空字符串)。这允许转换回来 在布尔值和字符串值之间。
您无法按照您尝试的方式测试未选中复选框的原因是浏览器不会在表单提交时发送未经检查的复选框状态。
这个难题的典型解决方案是:
在实际复选框之前在HTML表单中添加隐藏字段,使其与复选框名称相同,并显示表示未选中状态的值。
<input type="hidden" name="checkbox1" value="0">
<input type="checkbox" name="checkbox1" value="1">
这些隐藏字段将在表单提交时提交,如果选中 1 ,将被复选框值覆盖。
1)如果选中该复选框,则实际上都会发送这些值,但是如果它们具有相同的参数名称,则PHP将使用稍后接收的值覆盖任何先前接收的值(除非参数名称表示没有明确的密钥名称,例如name="checkbox[]"
而不是name="checkbox[1]"
)。