下面的代码不输出任何东西:
$bool_val = (bool)false; echo $bool_val;
但是下面的代码输出1:
1
$bool_val = (bool)true; echo $bool_val;
当$bool_val为false时,是否有比添加if语句更好的方法来打印0或false ?
$bool_val
false
if
0
不,因为另一个选择是修改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;
或
var_export($bool_value)
如果第二个参数不为真,它将直接输出结果。
sprintf ()的%b选项将把一个布尔值转换为整数:
%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,用于一般字符串替换。
%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将被打印出来。
$var
true
这将给出0或1:
intval($bool_val);
PHP手动:intval函数
Json_encode将开箱即用,但它并不漂亮(缩进等):
echo json_encode(array('whatever' => TRUE, 'somethingelse' => FALSE));
给了…
{"whatever":true,"somethingelse":false}
var_export提供所需的功能。
var_export
这将总是打印一个值,而不是为null或false打印任何值。var_export输出传入参数的PHP表示形式,输出可以复制/粘贴回PHP。
null
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",你可以强制转换为布尔类型,如下所示,但要注意以下特性:
"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
您正在将一个布尔类型转换为布尔类型,并期望显示一个整数。它适用于true,但不为false。因为你想要一个整数:
如果你想调试一个数组,你可以试试这个:
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 )