我了解到,空字符串“”、0和“0”在php中都表示错误。我想知道 php 在比较相等性时是否考虑到这一点。
$str = "";
echo ($str == "0") ? "yes" : "no"; // prints "no" (A)
echo ($str == 0) ? "yes" : "no"; // prints "yes" (B)
A 行表明 php 正在比较 $str 和“0”,就好像它们都是字符串一样,忽略它们都可能意味着 false。但B线正在比较他们的“错误”解释。
那么php首先检查两个值是否具有相同的类型,如果是,则检查是否相等,假设类型相同;如果没有,它使用值的布尔含义(是否涉及类型转换?)
我了解到,空字符串“”、0和“0”在php中都表示错误。
这种说法是错误的。空字符串,0
and "0"
为假时转换为布尔值类型。否则,它们分别是空字符串、整数零或只有一个字符的字符串。
==
检查两个变量的值。如果他们的类型不同,就会发生一些选角,并且会出现不可预测的(对于新秀来说)结果。
===
检查两个变量的值and他们的类型。
无论如何,当你比较时"0" == ""
,PHP解释器比较两个不同的字符串。但当你和0 == ""
它首先将数字字符串更改为整数。空字符串等于 0。所以我们最终得到0 == 0
这是真的。
Note: "8abc"
变成8
转换为整数后。abc8
变成0
铸造时
手册:
- 类型铸造(杂耍) http://php.net/manual/en/language.types.type-juggling.php
- 类型比较 http://php.net/manual/en/types.comparisons.php
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)