在php中打印false

Ran*_*agg 2 php syntax boolean

我试图打印以下声明:

print false . "\n" . true . "\n";
echo false . (bool)false . "\n" . true . "\n";
print "0" . "\n" . true . "\n";
Run Code Online (Sandbox Code Playgroud)

我得到的结果只是"1 1 0 1".预期的结果是:

0
1
0
1
0
1

我正在使用PHP 5.4.3 MSVC9 x64有人可以解释为什么以及如何让它以正确的方式打印?

Col*_*son 10

您的问题来自您对+PHP中字符串的运算符的误解.字符串连接运算符是.因为PHP是松散类型的,它不知道你是想要连接还是添加字符串.

我会为你分解一下:

print false + "\n" + true + "\n";
echo false+(bool)false + "\n" + true + "\n";
print "0" + "\n" + true + "\n";
Run Code Online (Sandbox Code Playgroud)

首先,你可能想选择留下来echoprint.现在,继续:

print false + "\n" + true + "\n";
Run Code Online (Sandbox Code Playgroud)

PHP字符串,当添加(未联系)时,评估为0.所以这个陈述评估为:

print 0 + 0 + 1 + 0;
Run Code Online (Sandbox Code Playgroud)

是的1.其他人效仿.如果希望代码有效,则应使用连接运算符(.).如果你想编写TrueFalse喜欢.NET的功能,你可以编写一个简单的函数:

function writeBool($var)
{
    echo ($var) ? "True" : "False";
}
Run Code Online (Sandbox Code Playgroud)

根据PHP的松散打字(如果你问我,这很糟糕),任何会评估的true东西都会写成"True".我仍然不鼓励使用函数来执行此操作,因为PHP中的函数调用很昂贵.

  • 短暂的解释...但已经有+5:P现在**那是**炒作! (3认同)
  • 一个非常好的解释并不能解决我的问题 (2认同)
  • "月亮是由奶酪制成的.这不是真的,只是一种解释." (2认同)