如何在PHP中的IF语句中使用运算符和或

如何在PHP中的IF语句中使用运算符和或,php,if-statement,operators,Php,If Statement,Operators,我尝试在PHP脚本中使用运算符和,或在IF语句中使用,如下所示: if($user[id]=='1' AND (($_GET['f']=='f-ppas') || ($_GET['f']=='f-kua'))){ ..... } 但结果是错误的。有人能帮我吗?将和更改为& if($user['id']=='1' && (($_GET['f']=='f-ppas') || ($_GET['f']=='f-kua'))){ ..... } 和运算符有一些优先级问题 $

我尝试在PHP脚本中使用运算符和,或在IF语句中使用,如下所示:

if($user[id]=='1' AND (($_GET['f']=='f-ppas') || ($_GET['f']=='f-kua'))){
   .....
}

但结果是错误的。有人能帮我吗?

更改为
&

if($user['id']=='1' && (($_GET['f']=='f-ppas') || ($_GET['f']=='f-kua'))){
   .....
}
运算符有一些优先级问题

$this = true;
$that = false;

$truthiness = $this and $that;
上面的
$truthiness
具有值
true
。为什么?<代码>=
的优先级高于和。添加括号以显示隐式顺序使这一点更清楚:

 ($truthiness = $this) and $that
如果在第一个代码示例中使用
&&
而不是
,则它将按预期工作,并且为false


参考资料:

定义“错误”。PS:奇怪的是,你在同一个表达式中使用
以及
|
(而不是
)看起来不一致。使用
&&
代替
$user[id]
将引起PHP通知,如果它没有
'
。应该是
$user['id']
我不知道您期望的是什么,但是当您使用
A和(B或C)
时,这将计算为
(A和B)或(A和C)
。也许不是你所期望的。@responsiblevebri:我没说这是个问题。我说它看起来不一致。那么你对IF语句的逻辑有问题。我不明白你想达到什么目的。更新您的问题,以便我们能够正确回答:)是的,它会起作用,但在某些情况下,如我在示例中所述,
运算符存在优先级问题。如果说运算符存在优先级问题,这是很不公平的。不是。优先级定义得很好。所以,使用运算符而不检查其优先级的程序员有一些问题。好吧,选错了词。
运算符如果不小心使用,将生成错误的输出:P