当 PHP/Perl 测试一个值时,我遇到了这个有趣的行为
print "0" ? "Yes" : "No"; // => No
print "00" ? "Yes" : "No"; // => Yes
print "0.0" ? "Yes" : "No"; // => Yes
print "-0" ? "Yes" : "No"; // => Yes
print "+0" ? "Yes" : "No"; // => Yes
print "0 " ? "Yes" : "No"; // => Yes
所以看起来字符串中的数值并不重要,但是字符串有一个特定的情况"0"
.
最让我惊讶的是 Perl 确实有同样的行为。
为什么有一个特定的情况,字符串是完全"0"
?
您正在使用三元运算符来检查真实性之前的表达式的?
. The 真实性值的描述在Booleans https://www.php.net/manual/en/language.types.boolean.php部分:
转换为 bool 时,会考虑以下值false
:
- 布尔值
false
itself
- 整数 0(零)
- 浮点数 0.0 和 -0.0(零)
- 空字符串和字符串“0”
- 具有零个元素的数组
- 特殊类型 NULL(包括未设置的变量)
- 从无属性空元素(即既没有子元素也没有属性的元素)创建的 SimpleXML 对象。
所有其他值都被视为 true(包括任何资源和 NAN)。
所以是的,字符串"0"
被视为特殊情况。
Perl's 真理与谎言 https://perldoc.perl.org/perldata#Scalar-values行为有点像 PHP。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)