2009-12-09 52 views
1

变量的值下面列出帮助理解这行PHP是做

$v['flag'] = 10 
kPOSTAGE_HOME = 8 

所以没有赫克以下行做什么?

if(($v['flag']&kPOSTAGE_HOME)==kPOSTAGE_HOME) { 
    //do something 
} 

回答

7

&设置位设置。在这两个值一些二进制数学:

00001010 | 10 
& 00001000 | 8 
--------------- 
= 00001000 | 8 

所以10&8回报8和8 == 8原因是为了检查该位掩码的标志是否被设置...

4

它会检查$v['flag']位模式是否有它的第3位设置。

0

它会在$v['flag']中检查第三位何时开启。 &是“按位和”运算符,8的二进制是"00000100",因此您将执行“按位”和除第三位以外的所有位都将为零,因此如果第三位打开,它将保留,因此您需要进一步检查平等。

1

它屏蔽变量中的'8'位。数字“10”以10进制表示== == 1001以二进制表示,并且8 == 1000.所以这意味着“确定1001是否设置了1000”位?“答案是'是'

2

而且,对于更好。可读性可以简化为以下几种:

if ($v['flag'] & kPOSTAGE_HOME) {