我有这个函数,我试图理解如果我使用===而不是==,它是如何为真以及它是如何为假的。
function is_equal($value1, $value2) {
$output = "{$value1} == {$value2}: ";
if ($value1 == $value2) {
$output = $output . "true<br />";
} else {
$output = $output . "false<br />";
}
return $output;
}
echo is_equal("123", " 123");
echo is_equal("123", "+0123");
?>
上面的代码结果为真,因为我正在测试==,这是怎么回事?如果我使用===则为false
当您使用==
比较相等性时,PHP将篡改类型。我怀疑你的类型被混淆了,导致了数字比较。
当您使用===
比较相等性时,首先比较类型,然后是值。
没错。===将比较值和类型,而不是==比较值是否相同。
你也可以试试这个:
echo is_equal("123", 123);
===
检验两个变量是否相同(相同值,相同类型)。==
测试相等性,并为您做类型杂耍。
看这里