PHP - 获取bool以在false时回显false

Ano*_*us1 160 php boolean

以下代码不打印任何内容:

$bool_val = (bool)false;
echo $bool_val;
Run Code Online (Sandbox Code Playgroud)

但是下面的代码打印出来1:

$bool_val = (bool)true;
echo $bool_val;
Run Code Online (Sandbox Code Playgroud)

有没有更好的方式来打印0false$bool_valfalse不是增加一个if声明?

Dan*_*man 237

echo $bool_val ? 'true' : 'false';
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想在错误时输出:

echo !$bool_val ? 'false' : '';
Run Code Online (Sandbox Code Playgroud)

  • 它没有任何明显的好处,令人困惑,庞大而无益.我已经编程了20多年而且*从来没有*我想'假'自动转换为空白..多次无效,但从不'假'.我的Java/Spring/Hibernate开发比那些适度的PHP系统更加清晰和强大.**我可以找到很多困惑的人..**http://stackoverflow.com/questions/9042002/php-printed-boolean-value-is-empty-why**但我找不到任何参考关于这个设计"功能"的真实_reason_.** (71认同)
  • 'FALSE ==''`并不奇怪.它完全有效,是其他语言的一部分,包括javascript.奇怪的是FALSE默认为空字符串.它应默认为0.始终.特别是因为TRUE将始终默认为1.这打破了编程的基本规则.保持代码一致.这显然是一个错误. (6认同)
  • 虽然这是最简单的方法,但通过 print_r 运行包含布尔值的数组,这些值将显示空白,除非您之前通过交换它们的循环运行数组,所以如果您只是尝试调试或记录,查看这些值是真的还是假的或者其他看起来空白的东西就变成了一个巨大的痛苦。 (3认同)
  • 我真的想争论为什么(字符串)FALSE ==""基于PHP的文档中的这个位是一个好主意:"布尔值TRUE值转换为字符串"1".布尔值FALSE转换为""(空string).这允许在布尔值和字符串值之间来回转换." 但是我测试了它,并且(bool)"0"也评估为FALSE,所以......我不知道.我喜欢PHP,但我不能否认那有点'奇怪> _> (2认同)
  • @Ben虽然`!! '0'` 在 PHP 中求值为 `false`,在 JS 中为 `true`。`!!""` 在 JS 和 PHP 中是假的。 (2认同)

Saa*_*aad 61

这是最简单的方法:

$text = var_export($bool_value,true);
echo $text;
Run Code Online (Sandbox Code Playgroud)

要么

var_export($bool_value)
Run Code Online (Sandbox Code Playgroud)

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


Ign*_*ams 35

不,因为另一个选择是修改Zend引擎,并且很难将其称为"更好的方式".

编辑:

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

$boolarray = Array(false => 'false', true => 'true');
echo $boolarray[false];
Run Code Online (Sandbox Code Playgroud)

  • @mehaase:我很久以前就不再试图对PHP的类型处理应用任何逻辑.我只是接受它. (65认同)
  • 这是一种奇怪的方法,因为数组键不能是b​​ool类型.PHP会将其强制转换为数组(0 =>'false',1 =>'true'). (3认同)

ser*_*nri 27

这将按原样打印出布尔值,而不是1/0.

    $bool = false;

    echo json_encode($bool);   //false
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的答案 (2认同)

ako*_*ond 20

我喜欢这个打印出来的

var_dump ($var);
Run Code Online (Sandbox Code Playgroud)


Yan*_*hon 19

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

 echo (int)$bool_val;
Run Code Online (Sandbox Code Playgroud)


Jon*_*ell 11

var_export 提供所需的功能.

这将始终打印一个值,而不是打印nullfalse.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'
Run Code Online (Sandbox Code Playgroud)

如果你想打印字符串"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
Run Code Online (Sandbox Code Playgroud)


小智 6

echo(var_export($var)); 
Run Code Online (Sandbox Code Playgroud)

when$var是布尔变量,trueorfalse会被打印出来。

  • 这有点误导。在这种情况下,`var_export` 将回显其结果并返回 null,因此 var_export 输出的是 `true || false`,而 `echo` 正在回显 `null` (`''`)。要从 `var_export` 返回输出,您需要提供第二个参数作为 `true`。 (4认同)

nua*_*ala 5

%b的选项的sprintf()将一个布尔值转换为整数:

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
Run Code Online (Sandbox Code Playgroud)

如果你不熟悉的话:你可以给这个函数的参数的任意量,同时第一个应该是您与替换字符串像五香输出中的字符串%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");
Run Code Online (Sandbox Code Playgroud)