php中的布尔值为整数

时间:2015-03-26 20:24:46

标签: php checkbox int boolean logic

我目前正在使用表单中的复选框,并希望将复选框值保存到int类型的数据库列中。实现这一目标的最有效方法是什么。我已经尝试将变量转换为(int),但这对我来说还没有做任何事情。

HTML: <input name='active' id='active' ng-model='formData.active' ng-init='formData.active=true' type="checkbox"> Active </br>


PHP:
$active = (int) $_POST['active'];
echo $active;
echo $_POST['active'];

Output:
0
true

注意:我试图在没有糟糕的if语句或开关的情况下实现它。

5 个答案:

答案 0 :(得分:0)

只有选中复选框,才会设置复选框的$_POST变量,因此您可以使用以下内容:

$active = isset($_POST['active']) ? 1 : 0;

我怀疑你得到字符串“true”而不是布尔“true”,在这种情况下你可以使用类似的结构:

$active = $_POST['active'] === "true" ? 1 : 0;

答案 1 :(得分:0)

https://stackoverflow.com/a/29288171/3923450中的解决方案应该可行,

但如果您正在寻找内置功能,请尝试

intval

答案 2 :(得分:0)

在输入标记

中添加值属性
<input name='active' value='1' ...>

现在它应该按照你需要的方式工作。

答案 3 :(得分:0)

在PHP手册中查看以下代码:

filter_var('FALSE', FILTER_VALIDATE_BOOLEAN, array('flags' => FILTER_NULL_ON_FAILURE)

参考:http://php.net/manual/en/function.filter-var.php#118356

答案 4 :(得分:0)

首先,你在HTML中的输入是&#34;粘性&#34;在PHP中,你测试&#34;活跃&#34;。 但无论如何,请在测试后尝试使用PHP:

if (isset($_POST['sticky']) and ($_POST['sticky']=='on')) $active=1;
else $active=0;