php
2017-08-07 75 views 1 likes 
1

我在回顧一些PHP代碼,發現一些我無法理解的條件語句。這個條件是什麼意思?

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

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

就是這三個條件語句之間的區別..不應該,他們都返回true,如果$options['mentionbbcode']設置? 這裏整數值的作用是什麼?

+1

看看[位運算符](http://php.net/manual/en/language.operators.bitwise.php)。 –

+0

感謝您的迴應,你能否給我舉例說明這個聲明返回true和另一個返回false的地方? –

回答

1

a bitwise and operation

因此,例如,使用時$value = $var & 8$value將是一個數,其對於那些在這兩個$var81的位,可以在新的值1

在你的情況下,這些條件正在測試是否爲該值設置了某個位,第4個,第3個和第2個是正確的。

更新:
下面是第一個條件不同值的結果的一些示例。它測試是否設置了右邊的第四位。

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

只要數字中的一位被設置,PHP就會將其解釋爲true。

+0

感謝您的迴應,你能否給我舉例說明這個聲明返回true和另一個返回false的地方? –

+0

我添加了一些按位計算的例子 – Jerodev

相關問題