为什么FALSE类型变为空字符串而TRUE被类型变为“1”?

时间:2014-10-23 12:01:14

标签: php

FALSE的字符串表示不能是"0",就像TRUE被变成"1"一样吗?

From the manual

  

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

它们是什么意思“允许在布尔值和字符串值之间来回转换”。 那么TRUE不允许这样做?

你可以解释一下并举一些例子吗?

注意:我知道还有其他相关问题,但没有一个提供我正在寻找的东西!所以不要打扰复制链接!!

2 个答案:

答案 0 :(得分:2)

检查以下代码:

var_dump("0" == false.""); // bool(false)
var_dump(""  == false.""); // bool(true)

如果false表示为"0",则给定的比较结果为false"0" != ""。 这就是false表示为""而不是"0"的原因,提供了反向转化。

答案 1 :(得分:0)

这个问题的答案或多或少基于意见。这是我的解释:

历史上,在操作失败的情况下,PHP在许多情况下使用FALSE作为输出值。例如,substr()会返回字符串 FALSE 。因此,在我看来,PHP优化了FALSE转换用于输出目的:

$name = 'JOHN';
$theSixthLetter = substr($name, 6, 1); // false
echo 'The sixth letter of the name is: ' . $theSixthLetter; // empty string