PHP 按位与或 (^ 、&)

今天朋友群里朋友问了下 按位与或的问题。。

     按位于主要是对二进制数操作。

   

复制代码
<?php
$a = 1;
$b = 2;
$c = $a^b;

echo $c  // 3

?>
复制代码

   这里不是单纯的相加关系 

   十进制 1换算成二进制  00000001

   十进制 2换算成二进制  00000010

   按位^                       00000011   // 就是不相同的都算成1 啦 ^_^

   然后,

 

<?php
$a = 1;
$b = 2;
echo $a & $c;  // 1
?>

 

十进制 3换算成二进制 00000011

十进制 1换算成二进制 00000001

  按位& 00000001 // 就是各个位数相同的不变否则都算成0

最后介绍下用法 ; 按位&后返回值是没意义的。 主要是用来判断$a 是否存在于 $c // 权限用法比较多。

复制代码
<?php
$my_privilege = 15;  // 1+2+4+8 拥有全部权限
$Pri = '';
$privilege_arr = array(8=>'增', 4=>'删',2=>'改',1=>'查');

foreach($privilege_arr as $k =>$v){
  $k & $my_privilege &&  $Pri .= '我有'.$v.'的权力<br>';
}
echo $Pri;
?>
复制代码

 

posted @ 2013-09-18 15:18  jshaibozhong  阅读(364)  评论(0编辑  收藏  举报