下面的代码不输出任何东西:

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

但是下面的代码输出1:

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

当$bool_val为false时,是否有更好的方法打印0或false,而不是添加if语句?


不,因为另一个选择是修改Zend引擎,人们很难将其称为“更好的方法”。

编辑:

如果你真的想,你可以使用一个数组:

$boolarray = Array(false => 'false', true => 'true');
echo $boolarray[false];

尝试将您的布尔值转换为整数?

 echo (int)$bool_val;

echo $bool_val ? 'true' : 'false';

或者如果你只想在它为false时输出:

echo !$bool_val ? 'false' : '';

你可以使用三元运算符

echo false ? 'true' : 'false';

我想用这个打印出来

var_dump ($var);

这是最简单的方法:

$text = var_export($bool_value,true);
echo $text;

or

var_export($bool_value)

如果第二个参数不为真,它将直接输出结果。


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");

echo(var_export($var)); 

当$var是布尔变量时,true或false将被打印出来。


结果是0或1:

intval($bool_val);

PHP手册:intval函数


Json_encode将开箱即用,但它并不漂亮(缩进等):

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

给了…

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

Var_export提供了所需的功能。

这将始终打印一个值,而不是不打印null或false。var_export输出传入参数的PHP表示形式,输出可以复制/粘贴回PHP。

var_export(true);    // true
var_export(false);   // false
var_export(1);       // 1
var_export(0);       // 0
var_export(null);    // NULL
var_export('true');  // 'true'   <-- note the quotes
var_export('false'); // 'false'

如果你想打印字符串"true"或"false",你可以强制转换为布尔类型,如下所示,但要注意以下特性:

var_export((bool) true);   // true
var_export((bool) false);  // false
var_export((bool) 1);      // true
var_export((bool) 0);      // false
var_export((bool) '');     // false
var_export((bool) 'true'); // true
var_export((bool) null);   // false

// !! CAREFUL WITH CASTING !!
var_export((bool) 'false'); // true
var_export((bool) '0');     // false

这将打印布尔值,而不是1/0。

    $bool = false;

    echo json_encode($bool);   //false

您正在将一个布尔类型转换为布尔类型,并期望显示一个整数。它适用于真,但不适用于假。因为你想要一个整数:

echo (int)$bool_val;

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

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 )