正确使用|(按位或)和||(逻辑或)

最近发现有些人写source时,分不清|(按位或)和||(逻辑或)

 if(!$requestCategorys|!in_array($itemcategory['roleId'],$requestCategorys))
 {
      $itemcategory['checked']='';
 }
 else
 {
       $itemcategory['checked']='checked';
 }

这样写的结果是不管!$requestCategorys是true或false,in_array函数总会执行,因为这是按位或,|在计算前,前后存在的表达式都要先计算完毕。

所以正确的做法如下: 

if(!$requestCategorys||!in_array($itemcategory['roleId'],$requestCategorys))
{
$itemcategory['checked']='';
}
else
{
$itemcategory['checked']='checked';
}

原文地址:https://www.cnblogs.com/Kakasi/p/2718653.html