下面的代码不输出任何东西:
$bool_val = (bool)false;
echo $bool_val;
但是下面的代码输出1:
$bool_val = (bool)true;
echo $bool_val;
当$bool_val为false时,是否有更好的方法打印0或false,而不是添加if语句?
下面的代码不输出任何东西:
$bool_val = (bool)false;
echo $bool_val;
但是下面的代码输出1:
$bool_val = (bool)true;
echo $bool_val;
当$bool_val为false时,是否有更好的方法打印0或false,而不是添加if语句?
当前回答
sprintf()的%b选项将把一个布尔值转换为整数:
echo sprintf("False will print as %b", false); //False will print as 0
echo sprintf("True will print as %b", true); //True will print as 1
如果您不熟悉它:您可以给这个函数任意数量的参数,而第一个参数应该是您的输出字符串,并添加替换字符串,如%b或%s,用于常规字符串替换。
每个模式将按顺序被参数替换:
echo sprintf("<h1>%s</h1><p>%s<br/>%s</p>", "Neat Headline", "First Line in the paragraph", "My last words before this demo is over");
其他回答
这是最简单的方法:
$text = var_export($bool_value,true);
echo $text;
or
var_export($bool_value)
如果第二个参数不为真,它将直接输出结果。
你可以使用三元运算符
echo false ? 'true' : 'false';
不,因为另一个选择是修改Zend引擎,人们很难将其称为“更好的方法”。
编辑:
如果你真的想,你可以使用一个数组:
$boolarray = Array(false => 'false', true => 'true');
echo $boolarray[false];
echo(var_export($var));
当$var是布尔变量时,true或false将被打印出来。
这将打印布尔值,而不是1/0。
$bool = false;
echo json_encode($bool); //false