【问题标题】:Why doesn't PHP print TRUE/FALSE? [duplicate]为什么 PHP 不打印 TRUE/FALSE? [复制]
【发布时间】:2020-09-27 12:59:33
【问题描述】:

可能重复:
PHP - Get bool to echo false when false

给定以下 test.php:

<?php

echo TRUE . "\n";    // prints "1\n"
echo FALSE . "\n";   // prints "\n"

?>

为什么php -f test.php 不打印TRUEFALSE?更重要的是,在FALSE 的情况下,为什么不打印任何内容?

【问题讨论】:

  • echo "TRUE";, echo "FALSE"; ?
  • 后者是设计使然。虽然它应该输出1 为真
  • 这是因为C 没有boolean,而是将0 用于FALSE,将其他所有内容用于TRUE。而且PHP使用了很多C的概念。因此,您可以在 PHP 中使用if($foo),当设置了$foo,而不是空且不是0false
  • @AgnelKurian echo ($foo ? "TRUE" : "FALSE") ;

标签: php


【解决方案1】:

来自manual

布尔值 TRUE 转换为字符串“1”。 Boolean FALSE 被转换为“”(空字符串)。这允许在布尔值和字符串值之间来回转换。

【讨论】:

  • 我认为我们大多数人提出这个问题并没有想到的是“......允许来回转换......”
  • null 在 PHP 中也不能打印,是不是 null 也被转换为空字符串?
  • @Muhammad 是的。
【解决方案2】:

因为false == '';

这样做打印布尔值:

$bool = false;
echo $bool ? 'true' : 'false';

或者...

echo $bool ? 'yes' : 'no';
echo $bool ? '1' : '0';

【讨论】:

    【解决方案3】:

    因为转换为字符串时的布尔值分别转换为1 和空字符串。

    据说这是为了实现 boolean -> string -> boolean 之间的透明往返。

    【讨论】: