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

最近发现有些人写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';
}

posted @ 2012-10-10 17:36  V.Wang  阅读(529)  评论(0编辑  收藏  举报