$detect = new Mobile_Detect();
$mobile = $detect->isMobile() and !$detect->isTablet();
VS
$detect = new Mobile_Detect();
$mobile = ($detect->isMobile() and !$detect->isTablet());
如果我是平板电脑(也被认为是移动平板电脑),那么第一个例子就是移动设备。 (不期望)。对于第二个例子,我得到了假(如预期的那样)。
为什么我需要括号,因为它只是一个和运算符。
答案 0 :(得分:6)
要拥有more adequate precedence compared to =,请使用&&
:
$mobile = $detect->isMobile() && !$detect->isTablet();
来自documentation on logical operators:
“和”和“或”两种不同变体的原因 运营商是他们以不同的优先运作。
答案 1 :(得分:3)
您需要它们,因为=
标志的优先级高于and
。使用&&
可能会丢失它们。