PHP - IF或运算符不工作

时间:2018-04-22 14:34:39

标签: php

我有一个非常简单的PHP代码,看起来像

$location = 'spain';

if ($location != 'usa' || $location != 'spain') {
    echo 'Not Spain';
} else {
    echo 'This is Spain';
}

我期待它回应'这是西班牙',但事实并非如此,我是否错误地使用了OR运算符?

4 个答案:

答案 0 :(得分:1)

不,你的情况不对。

$location = 'spain';

if ($location == 'usa' || $location != 'spain') {
    echo 'Not Spain';
} else {
    echo 'This is Spain';
}

当你使用或条件然后它意味着如果任何条件为真,那么它发生所以你的$ location!='usa'返回true,因为你的位置值不是美国它是sapin

答案 1 :(得分:0)

不,你应该在这里使用AND。

要了解原因,请将变量$location替换为实际字符串'spain'

if ('spain' != 'usa' || 'spain' != 'spain') {
    echo 'Not Spain';
} else {
    echo 'This is Spain';
}

你可以清楚地看到第一个条件是true,因为“西班牙”确实与“美国”不同。这就是为什么你得到'Not Spain'的结果。

答案 2 :(得分:0)

在这种情况下你可能想要使用AND运算符

if ($location != 'usa' && $location != 'spain') {
    echo 'Not Spain';
} else {
   echo 'This is Spain';
}

答案 3 :(得分:0)

您的条件表达式逻辑具有不必要的冗余。您正在执行完整的字符串比较,并确定一个字符串是否为spain,则只需要一个条件。 (美国与逻辑无关。)

$location = 'spain';
if ($location != 'spain') {
    echo 'Not Spain';
} else {
    echo 'This is Spain';
}

如果您想确定字符串是spain还是usa并使用==比较并输出一个elseif表达式来输出准确的响应。

$location = 'spain';
if ($location == 'spain') {
    echo 'This is Spain';
} elseif ($location == 'usa') {
    echo 'This is USA';
} else {
    echo 'This is neither Spain, nor USA';
}