我有一个非常简单的PHP代码,看起来像
$location = 'spain';
if ($location != 'usa' || $location != 'spain') {
echo 'Not Spain';
} else {
echo 'This is Spain';
}
我期待它回应'这是西班牙',但事实并非如此,我是否错误地使用了OR运算符?
答案 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';
}