浅析PHP 按位与或 (^ 、&)

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

  PHP 工作有1年了 可能对这块不太熟悉吧 在这里给新手朋友介绍下这部分

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

  

复制代码 代码如下:

  <?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;

  ?>