为什么这个
var_dump(0 == "string");
输出这个
bool(true)
运算符的上下文不==
应该根据这套规则0
转换成FALSE
和"string"
成吗?TRUE
var_dump(0 == "string");
正在进行数字(整数)比较
0 是整数,所以“字符串”被转换为整数进行比较,等于整数值 0,所以 0 == 0 为真
详见 PHP 文档中与各种类型表的比较
此处显示的表格更适合您的情况。
它显示TRUE
用于与0
比较"php"
。
在比较中,您不会将两个操作数都转换为布尔值,但会将一个操作数转换为与另一个操作数的类型匹配。在您的情况下,字符串被转换为整数,这导致另一个0
. 这给了你0 == 0
,结果为真。
它们不是同一类型,如果要检查它们是否也属于同一类型,请使用 ===。
在比较期间,字符串被转换为整数:
var_dump(0);
var_dump((int)"string");
var_dump(0 == "string");
最后一行将自动转换为:
var_dump(0 == (int)"string");
所以这个回报将返回:
int(0)
int(0)
bool(true)
bool(true)
您首先在此站点上查找比较表:http: //php.net/manual/en/language.operators.comparison.php。转换为bool
不适用于此处。
Operand 1 Operand 2
...
string, resource string, resource Translate strings and resources to numbers,
or number or number usual math
"string"
强制转换为等于0
.