**& 按位与,相同的不变,否则都算成0
| 按位或,
^ 按位异或,不相同的都算成1**
PHP按位与或 (^ 、&)运算也是很常用的逻辑判断类型,有许多的PHP新手们或许对此并不太熟悉,今天结合一些代码对PHP与或运算做些介绍,先说明下,在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;
?>
通过一个值就可以区分出很多字段
> $a = hexdec(‘0x10c04000‘);
> $b = ($a & 0x0FF00000) >20;
> $c = ($a & 0x000FF000) >12;
> var_dump($a, $b, $c);
> 输出:
> int 281034752
> int 12
> int 4