PHP - 当值为false时,如何使bool类型输出false

217
以下代码没有输出任何内容:
$bool_val = (bool)false;
echo $bool_val;

但是以下代码会打印1:

$bool_val = (bool)true;
echo $bool_val;

如果$bool_val为false,有没有比添加一个if语句更好的方法来打印0或false?


8
如果这是用于调试,建议使用 var_dump 而不是 echo。 - Mark E. Haase
1
(bool)转换是多余的,你不需要将bool强制转换为bool:(bool) true === true - Jon Surrell
2
有没有一种方法可以配置PHP,使得 echo 0==1; 输出 0false - mario
14个回答

3
你可以使用三元操作符。
echo false ? 'true' : 'false';

3

你将一个布尔值强制转换为布尔值,并期望显示一个整数。它可以用于 true 但不适用于false。由于你期望一个整数:

echo (int)$bool_val;

2

json_encode 能够直接完成此操作,但输出的结果不会很美观(缩进等):

echo json_encode(array('whatever' => TRUE, 'somethingelse' => FALSE));

...提供...

{"whatever":true,"somethingelse":false}

0

如果你想调试一个数组,可以尝试这个方法:

function debug_array($a){
    return array_map(function($v){
        return is_bool($v) ? ($v ? 'true' : 'false') : $v;
    }, $a);
}

使用它:

$arr = debug_array(['test' => true, 'id' => false]);
print_r($arr); // output Array ( [test] => true [id] => false )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接