或&;-逻辑运算符php

或&;-逻辑运算符php,php,Php,我在这个脚本中做错了什么 if (!is_admin() or !is_product_category() && is_array($arrpags2)) 如果您试图检查这些,我不明白为什么不工作!是_admin()还是!与OR运算符一起使用时,您是否可以这样使用\u product\u category(): if ((!is_admin() OR !is_product_category()) && is_array($arrpags2)) if (!i

我在这个脚本中做错了什么

if (!is_admin() or !is_product_category() && is_array($arrpags2))

如果您试图检查这些
,我不明白为什么不工作!是_admin()还是!与OR运算符一起使用时,您是否可以这样使用\u product\u category()

if ((!is_admin() OR !is_product_category()) && is_array($arrpags2))
if (!is_admin() OR (!is_product_category() && is_array($arrpags2)))

如果您试图检查这些
!is_product_category()&&is_array($arrpags2)
与&&operator一起使用,您可以这样使用:

if ((!is_admin() OR !is_product_category()) && is_array($arrpags2))
if (!is_admin() OR (!is_product_category() && is_array($arrpags2)))

如果没有括号,PHP将从左到右计算每个表达式 应使用如下括号:

if 
(
(!is_admin() || !is_product_category()) &&
is_array($arrpags2)
)

请参阅这篇关于&&和| |运算符用于布尔条件的文章,而and和or用于控制流


有关详细信息,请参见

运算符优先级。如果(!is_admin()或!is_product_category())&&is_array($arrpags2)),问题不在于出了什么问题,而在于我们想做什么。不清楚OP希望它是什么顺序<代码>!是_admin()还是!是否为产品类别()或
!is_product_category()&is_array($arrpags2)
。同意@Sougata:更新了答案。。。