2013-10-25 53 views
-1

我想用來存儲用戶權限的數據庫整,但不知道如何...它是如何在PHP工作,例如error_reporting()二進制操作以獲取/設置屬性

你有不同的常數,就像... E_ERROR = 1,E_WARNING = 2,E_PARSE = 4,E_NOTICE = 8等等,你可以將它像error_reporting(E_ERROR | E_NOTICE) ...

在這種情況下E_WARNING | E_NOTICE == 10

好了,我不明白,這是二元運算「OR」,並儘可能連續常數乘以2,一切都應該是可逆式...但如何?

所以我得到了這個(int)10。我該如何檢查它是否是E_WARNINGE_NOTICE

PS。我明白,它是關於二進制表示法的1010

+0

難道你們DBMS支持'SET'數據類型? – Barmar

+0

@Barmar不知道你是什麼意思。 –

+0

http://dev.mysql.com/doc/refman/5.0/en/set.html – Barmar

回答

1

如果你想檢查是否值設置,你可以使用按位與&運營商。

$warningEnabled = $val & E_WARNING; 

這工作,因爲(假設$val128)...

1000 0000 & # $value 
0000 0010 # E_WARNING 

由於相同的位不同時設置,你可以告訴$val沒有設置警告。

您可以在PHP中,如果你用bindec()功能(包裹上面的值作爲字符串),它可以幫助你更好地理解喜歡執行此。

+0

是的,我明白...有一些其他的概念,但這應該是足夠的。 –

1

如果你想知道,如果值包含E_WARNING,做到:

if ($value & E_WARNING) 
+0

太容易了,謝謝! –