2017-08-07 6 views
1

私はいくつかのPHPコードを見直していて、理解できない条件文のブロックを発見しました。 $options['mentionbbcode']が設定されている場合この条件付きの意味は何ですか?

 if ($options['mentionbbcode'] & 8) { 
       $final_rendered .= '<span class="highlight">'; 
     } 
    if ($options['mentionbbcode'] & 4) { 
       $final_rendered .= '<i>'; 
     } 

    if ($options['mentionbbcode'] & 2) { 
       $final_rendered .= '<b>'; 
     } 

これら3つの条件文との違いは、それらすべてがtrueを返すべきではありません...何ですか? ここで整数値の役割は何ですか?

+1

[ビット演算子](http://php.net/manual/en/language.operators.bitwise.php)をご覧ください。 –

+0

応答してくれてありがとう、このステートメントが真を返す場所と偽を返す場所を教えてもらえますか? –

答えて

1

つまり、a bitwise and operationです。例えばだから

$value = $var & 8を使用して、$value$var8両方で1であるビットは、新しい値に1であるの番号であろう。

あなたのケースでは、特定のビットが値に設定されている場合、これらの条件はテストされています。第4、第3、第2が正しいとします。

更新:
ここでは、最初の条件の値が異なるいくつかの例を示します。右から4番目のビットがセットされているかどうかをテストします。

12 & 8 // true (01010 & 01000 => 01000) 
15 & 8 // true (01111 & 01000 => 01000) 
7 & 8 // false (00111 & 01000 => 00000) 
17 & 8 // false (10001 & 01000 => 00000) 

数字の1ビットが設定されている限り、PHPはこれを真と解釈します。

+0

返答いただきありがとうございます。このステートメントが真を返す場合と、偽を返す場合がある別の例を教えていただけますか? –

+0

ビット単位の計算の例をいくつか追加しました – Jerodev

関連する問題