<分区>
我正在尝试打印以下语句:
print false . "\n" . true . "\n";
echo false . (bool)false . "\n" . true . "\n";
print "0" . "\n" . true . "\n";
我得到的结果只是“1 1 0 1”。 预期结果是:
0
1
0
1
0
1
我正在使用 PHP 5.4.3 MSVC9 x64 有人可以解释为什么以及如何让它以正确的方式打印吗?
<分区>
我正在尝试打印以下语句:
print false . "\n" . true . "\n";
echo false . (bool)false . "\n" . true . "\n";
print "0" . "\n" . true . "\n";
我得到的结果只是“1 1 0 1”。 预期结果是:
0
1
0
1
0
1
我正在使用 PHP 5.4.3 MSVC9 x64 有人可以解释为什么以及如何让它以正确的方式打印吗?
最佳答案
您的问题来自您对 PHP 中字符串的 +
运算符的误解。字符串连接运算符是 。
由于 PHP 是松散类型的,它不知道您是否要连接或添加字符串。
我会为你分解:
print false + "\n" + true + "\n";
echo false+(bool)false + "\n" + true + "\n";
print "0" + "\n" + true + "\n";
首先,您可能希望选择继续使用 echo
或 print
。现在,继续:
print false + "\n" + true + "\n";
PHP 字符串,when added (not contacted) ,评估为 0
。所以这个语句的计算结果是:
print 0 + 0 + 1 + 0;
这是 1
。其他人效仿。如果您希望您的代码正常工作,您应该使用串联运算符 (.
)。如果您想像 .NET 那样编写 True
或 False
,您可以编写一个简单的函数:
function writeBool($var)
{
echo ($var) ? "True" : "False";
}
根据 PHP 的松散类型(如果你问我这很糟糕),任何会 evaluate to true
的东西, 会写“真”。我仍然不鼓励使用函数来执行此操作 function calls in PHP are expensive .
关于php - 在 php 中打印 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11512705/