在php.net中写道如下:
如果您将数字与字符串进行比较或比较涉及数字字符串,则每个字符串都会转换为数字,并且数字会进行比较。这些规则也适用于switch语句。当比较为
===
或!==
时,不会进行类型转换,因为这涉及比较类型和值
var_dump("10" == "1e1"); // 10 == 10 -> true
var_dump(100 == "1e2"); // 100 == 100 -> true
为什么在第一个例子中它被评估为真,但是,语句$ num =(int)“1e1”;评估为1而不是10 ??? 此外,为什么在第二个例子中它被评估为真,但语句$ num =(int)“1e2”;被评估为1而不是100 ??
答案 0 :(得分:1)
我不确定为什么(int)'1E1'
会显示1(它可能会忽略所有字母和之后的任何字母),但对我来说完美无缺的是:
echo '1E1'*1; //returns 10
答案 1 :(得分:0)
投射与平等不同。
答案 2 :(得分:0)
1e1 double 。
var_dump("10" == "1e1");
// 10 (converts to real type, not int) == 10 (converts to real type, not int) -> true
我尝试将数字字符串(浮点类型)转换为整数:
(int)'1E1'
它变为1而不是100。