2015-11-03 68 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)将是相同的。