函数在返回 true 或 false 时有效,但在返回 0 或 1 时无效


Function works when returning true or false but not when returning 0 or 1

function date2_in_the_past($day, $month, $year)
{
    $datestring = $year . "-" . $month . "-" . $day;
    if (date ('Y-m-d', strtotime($datestring)) < date('Y-m-d', strtotime("now",time()))) {
        $b = 1;  **// I want $b = true**;
    }
    else { $b = 0; **// I want $b = false;** }
    return $b;
}
//echo date2_in_the_past(24, 10, 2013);     // returns 0

但它不会返回任何带有$b = true$b = false;的内容。知道我如何使函数将$b分配给布尔值而不是编写'==1''==0'吗?

问题出在您评论的回显中。 如果要检查变量是真还是假,则应使用

var_dump($variable)

而不是

echo $variable;

您可以将变量初始化为 bool:

 function date2_in_the_past($day, $month, $year)
    {
     $datestring = $year . "-" . $month . "-" . $day;
     if (date ('Y-m-d', strtotime($datestring)) < date('Y-m-d', strtotime("now",time()))) {
        bool $b = true;  **// I want $b = true**;
    }
    else { bool $b = false; **// I want $b = false;** }
    return $b;
}
  • 返回 true 或 false 并使用运算符 === 和 !== 测试返回值
  • 当您在浏览器上回显布尔变量时,您看不到真或假,您将看到 1 表示真,没有表示 false 打印它,将布尔值写成字符串,如下所示:

    $var = 假;if($var === true) 回声"真";否则如果($var === 假) 回声"假";