PHP false-positives


PHP false-positives

我有这个函数,我试图理解如果我使用===而不是==,它是如何为真以及它是如何为假的。

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);

===检验两个变量是否相同(相同值,相同类型)。==测试相等性,并为您做类型杂耍。

看这里