'奇怪'的PHP比较行为

时间:2015-02-13 05:55:29

标签: php

这实际上可能不是奇怪的行为,但对我来说(来自java)肯定是,这就是我使用的代码。

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

当然已经规定,下面的输出是这样的:

Category: 6 -- Image: 4
Problem.

我不确定这是什么原因,考虑到使用&#34;&amp;&amp;&#34;而不是&#34; ||&#34;操作员,我几乎肯定这是正确的。也许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.";
    }
?>

2 个答案:

答案 0 :(得分:0)

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

Category: 6 -- Image: 4

因为(6!=1 AND 4==1)FALSE

答案 1 :(得分:0)

您的代码应该没问题。但请尝试使用以下代码。

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

More comparison operators