php 中的布尔值到整数

Boolean to integer in php

我目前正在表单中使用复选框,并希望将复选框值保存到 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 语句或开关的情况下实现它。

复选框的 $_POST 变量只有在复选框被选中时才会被设置,所以你可以使用这样的东西:

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

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

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

中的解决方案应该有效,

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

intval

在输入标签中添加一个值属性

<input name='active' value='1' ...>

现在它应该可以按您需要的方式工作了。

在 PHP 手册中查找可以找到以下代码:

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

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

首先,您在 HTML 中的输入是 "sticky",而在 PHP 中您测试的是 "active"。 但无论如何,请尝试 PHP 以下测试:

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