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)
首先,你可能想选择留下来echo或print.现在,继续:
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.其他人效仿.如果希望代码有效,则应使用连接运算符(.).如果你想编写True或False喜欢.NET的功能,你可以编写一个简单的函数:
function writeBool($var)
{
echo ($var) ? "True" : "False";
}
Run Code Online (Sandbox Code Playgroud)
根据PHP的松散打字(如果你问我,这很糟糕),任何会评估的true东西都会写成"True".我仍然不鼓励使用函数来执行此操作,因为PHP中的函数调用很昂贵.