【问题标题】:Boolean to integer in phpphp中的布尔值到整数
【发布时间】:2015-05-31 00:58:37
【问题描述】:

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

【问题讨论】:

  • 表单中的名称是sticky,您正在使用$_POST['active'] 访问它!!
  • @Subhanker 那只是我更新了。

标签: php checkbox int boolean logic


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    首先,您在 HTML 中的输入是“粘性的”,而在 PHP 中您测试的是“活跃的”。 但无论如何,请在 PHP 中尝试以下测试:

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

    【讨论】:

    • 它已在 13 分钟前编辑,即在您回答前 12 分钟。
    【解决方案3】:

    在输入标签中添加值属性

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

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

    【讨论】:

      【解决方案4】:

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

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

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

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

      【讨论】:

      • 我没有使用 'vanilla' 发布请求,所以这行不通,我已经尝试过了 ;) 1,false
      • @MattMc 请查看我的最新编辑。另外,你能告诉我们var_dump($_POST['active']) 的结果是什么吗?我猜是字符串“true”。
      • 大声笑检查最后发布的答案,我只是 derped。不管怎么说,多谢拉。确实是一个字符串
      【解决方案5】:

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

      但如果您正在寻找内置函数,请尝试

      intval
      

      【讨论】:

        猜你喜欢
        • 2013-12-03
        • 2020-08-29
        • 2011-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-03
        • 2021-03-24
        相关资源
        最近更新 更多