PHP'nin bu hat ne yapıyor anlamak Yardım

4 Cevap

Değişkenler değerler aşağıda listelenmiştir

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

Yani halt aşağıdaki satırı ne yapar?!

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

4 Cevap

& Her iki değerler kümesini bitlerini ayarlar. Bazı ikili matematik:

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

Bu yüzden 10&8 == 8, 8, 8, ve döndürür. Nedeni bit maskesi bir bayrak ayarlanmış olup olmadığını kontrol etmektir ...

Bu $v['flag'] in bit deseni 3. bit set bulunuyor olup olmadığını denetler.

Ve daha iyi okunabilmesi için, aşağıdaki basitleştirilmiş olabilir:

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

Bu değişken de '8 'biraz gizliyor. Numarası '10 'baz ikili 10 == 1001 ve 8 == 1000. Yani bu bit set "1001 1000 var mı" anlamına gelir? "Cevabı' evet '.