//debug(8 & 15);//8
$a = $this->list;//8
$b = $right[$modular[$i]['m_id']];//15
echo $a;//8
echo "<br/>";
echo $b;//15
debug($a & $b);//0debug()函数就是输出结果问题是 为什么 用变量代替 8和15 的时候 &运算变成0了
$a = $this->list;//8
$b = $right[$modular[$i]['m_id']];//15
echo $a;//8
echo "<br/>";
echo $b;//15
debug($a & $b);//0debug()函数就是输出结果问题是 为什么 用变量代替 8和15 的时候 &运算变成0了
$b = $right[$modular[$i]['m_id']];//15这两个真的一个是8一个是15么?
debug我没有,echo后,结果是8.
问题我找到了 PHP变量引用的时候默认的是string类型 我的版本是PHP5.4.2
而我需要的&运算只是针对int型 或者二进制的
我把代码中的需要运算的变量先转化成二进制 然后位运算 再把结果转化为十进制
然后就对了
貌似intaval()强制限定下类型也可以
谢谢大家帮助 给大家分享下我找到的原因
$b = decbin($right[$modular[$i]['m_id']]);//十五的二进制
$c = bindec($a & $b);//8
debug($c);//8
这就正确了
谢谢大家
function debug($var)
{
print "<pre>";
print_r($var);
print "</pre>";
}这是自定义函数