2015-11-03 63 views
1

https://stackoverflow.com/a/2867082/288568我發現了兩種禁用通知的方法。那麼究竟什麼是error_reporting布爾操作

error_reporting(E_ALL^E_NOTICE); 

error_reporting(E_ALL & ~E_NOTICE); 

之間的差異?

下面的行是做什麼的?

error_reporting((E_ALL | E_STRICT)^E_DEPRECATED^E_NOTICE); 

這會正確地報告E_ALL和E_STRICT,但不會被棄用和注意事項?

回答

1
var_dump(error_reporting(E_ALL^E_NOTICE)); 
var_dump(error_reporting(E_ALL & ~E_NOTICE)); 

是一樣的int(32759)。只是不同的二進制操作去那裏。

這會正確地報告E_ALL和E_STRICT,但沒有棄權和聲明?

var_dump(decbin ((E_ALL | E_STRICT)^E_DEPRECATED^E_NOTICE)); 

101111111110111 

111111111111111 E_ALL 
000100000000000 E_STRICT 
000000000001000 E_NOTICE 
010000000000000 E_DEPRECATED 

所以anwser是肯定的,(E_ALL^E_DEPRECATED^E_NOTICE)將是相同的。