熊二哈 4年前

修改理由:

更正错别字

此投稿已在 4年前 合并。

内容修改:

红色背景 为原始内容

绿色背景 为新增或者修改的内容

OldNewDifferences
2929| JSON_PRETTY_PRINT                                        | 0b010000000          | 128         |
3030| JSON_UNESCAPED_UNICODE \| JSON_PRETTY_PRINT        | 0b110000000          | 384         |
3131
32 可以看到从往左数`256`第8位是1,而`128`第七位是1,通过按位或运算以后7位和8位都成了1。那函数内部就可以只需要判断`json_encode`的第二个参数的二级制数第8位如果是1就是`JSON_UNESCAPED_UNICODE`为真,第7位如果是1就是`JSON_PRETTY_PRINT`为真了。
 32可以看到从往左数`256`第8位是1,而`128`第七位是1,通过按位或运算以后7位和8位都成了1。那函数内部就可以只需要判断`json_encode`的第二个参数的二级制数第8位如果是1就是`JSON_UNESCAPED_UNICODE`为真,第7位如果是1就是`JSON_PRETTY_PRINT`为真了。
3333
3434于是我又回想了还有哪个地方用了位操作符,一下又想起了这个函数`error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE)`,对比下二进制值。 
3535> 注意一下 `E_ALL` 在 5.4.x 版本以后为32767,早期版本为30719。下面的举例假设 PHP >= 5.4.x