';奇怪';PHP比较行为


'Strange' PHP Comparison behavior

实际上,这可能一点也不奇怪,但对我来说(来自java),这当然是,这是我正在使用的代码。

echo "</br>Category: " . $category . " -- Image: " . $image;
if(($category != 1) && ($image == 1)) {
    echo "</br>Problem.";
}

假设这已经被削减,那么以下输出是这样的:

Category: 6 -- Image: 4
Problem.

我不确定这是什么原因,考虑到使用了"&&"而不是"||"运算符,我几乎肯定这是正确的。也许PHP在比较整数时有不同的条件?这和说一样吗

if category is 6 AND image is present

if(image)

调用会在JavaScript中吗?

我在这里不知所措。

再现代码如下:

<?php
    if($_SERVER['REMOTE_ADDR'] != "xx.xx.xxx.xxx") { // Developer mode
        die('<h1>Oops, something went wrong, please wait while we fix it!</h1>');
    }
    $category = 6;
    $image = 4;
    echo "</br>Category: " . $category . " -- Image: " . $image;
    if(($category != 1) && ($image == 1)) {
        echo "</br>Problem.";
    }
?>

我无法复制错误,我只得到:

Category: 6 -- Image: 4

由于(6!=1 AND 4==1)FALSE

您的代码应该还可以。但只需使用以下代码即可。

$category = (int)6;
$image = (int)4;
echo "</br>Category: " . $category . " -- Image: " . $image;
if(($category !== 1) && ($image === 1)) {
    echo "</br>Problem.";
}

更多比较运算符