【问题标题】:PHP filter_var() does not return values for false or 0 [duplicate]PHP filter_var() 不返回 false 或 0 的值 [重复]
【发布时间】:2020-05-14 20:23:15
【问题描述】:

由于对真/假输入的验证不正确,我在 PHP 函数中遇到问题。
我在这里找到了一个解决方案,即采用 filter_var 转换为布尔值并检查输入是否有效。
做了一个简单的测试页面和php函数试试;该函数在确定“true,1,on”值时是正确的,并且确实返回了正确的“1”。
提交 '0, false' 时,函数不会按预期返回 '0';实际上它什么也不返回(即使 dump_var 说它是布尔值)。
这是简单的测试代码:

<?php
header("Content-Type: text/html; charset=UTF-8");

$flag = $_GET['flag'];
$filter = filter_var($flag, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
echo "Flag: ".$flag."  ,  Filter: ".$filter;

真假或 1 和 0 输入的结果:
标志:true - 过滤器:1
标志:false - 过滤器:

我的错误在哪里?
(使用 PHP:7.3.6)

【问题讨论】:

    标签: php boolean


    【解决方案1】:

    echo 使用布尔值时,如果值为false,则不打印任何内容。但是它仍然是一个布尔值,您可以使用以下方式显示该值:

    var_dump($filter);
    

    if($filter){
      echo 'is true';
    }else{
      echo 'is false';
    }
    

    echo $filter ? 'is true' : 'is false';
    

    var_dump 推荐用于调试目的,因为它还可以很好地显示虚假值和更复杂的结构,如数组:

    $array = [1,2,3];
    var_dump($array);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-07
      • 2021-05-15
      • 1970-01-01
      • 2013-06-29
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多