//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了

解决方案 »

  1.   

    debug( ($a & $b));试试这个结果。
      

  2.   

    debug 是什么函数?自定义的?
      

  3.   

    $a = $this->list;//8
    $b = $right[$modular[$i]['m_id']];//15这两个真的一个是8一个是15么?
    debug我没有,echo后,结果是8.
      

  4.   


    问题我找到了 PHP变量引用的时候默认的是string类型 我的版本是PHP5.4.2 
    而我需要的&运算只是针对int型 或者二进制的
    我把代码中的需要运算的变量先转化成二进制 然后位运算 再把结果转化为十进制
    然后就对了 
    貌似intaval()强制限定下类型也可以
    谢谢大家帮助 给大家分享下我找到的原因
      

  5.   

    $a = decbin($this->list);//8的二进制
    $b = decbin($right[$modular[$i]['m_id']]);//十五的二进制
    $c = bindec($a & $b);//8
    debug($c);//8
    这就正确了
    谢谢大家
      

  6.   


    function debug($var)
    {
        print "<pre>";
        print_r($var);
        print "</pre>";
    }这是自定义函数