$i=0;
$j='00:15';
if ($i==$j)
echo "equal";
else
echo "not equal";
显示相等?
答案 0 :(得分:6)
00:15
转换为整数,然后与$i
进行比较。由于intval()
(执行转换)在第一个非数字字符处停止,因此00:15
被转换为零,等于零。这里没有错误,这就是==
运算符的工作方式。
如果您想避免投射,请改用===
。
答案 1 :(得分:2)
使用==
类型将在比较之前进行转换。在这种情况下,两者都将转换为整数,当您将非数字字符串转换为整数时,它可能会导致0
。
如果您使用===
运算符,则会得到您期望的结果。
答案 2 :(得分:1)
string和int比较为int,所以$j
在这里转换为0,因为以00开头
答案 3 :(得分:0)
根本不奇怪 - 当比较字符串和整数时,第一个被转换为整数然后进行比较。使用===
进行类型检查,您将看到实际结果
答案 4 :(得分:0)
原来===是有问题的
例如10 === 10如果一个是整数而一个是字符串则为false,即使它们与表单发布中的相同也是如此。
我使用的解决方案是:
if(“$ i”==“$ j”)
这样它只会检查它们是否相同而不管类型