我注意到PHP中的一些函数使用标志作为参数。是什么使它们唯一而不是纯字符串参数?我在问,因为我想在自己的自定义函数中使用它们,但我很好奇这样做的过程是什么
编辑:总结一下,什么时候最好创建带有标志的自定义函数,什么时候是而不是?
它们只是映射到数字的常数,例如SORT_NUMERIC
(排序函数使用的常数)是整数1
。
查看json_encode()
的示例。
正如您所看到的,每个标志都是2n。这样,|
可以用于指定多个标志。
例如,假设要使用标志JSON_FORCE_OBJECT
(16
或00010000
)和JSON_PRETTY_PRINT
(128
或10000000
)。
如果任一操作数的位在…上,则位运算符OR(|
)将打开该位
JSON_FORCE_OBJECT | JSON_PRETTY_PRINT
是内部的。。。。
00010000 | 1000000
就是…
10010000
你可以向…查询。。。
var_dump(base_convert(JSON_PRETTY_PRINT | JSON_FORCE_OBJECT, 10, 2));
// string(8) "10010000"
CodePad。
这就是使用逐位运算符设置这两个标志的方法。
通常标志是2的连续幂的整数,因此每个标志都有一位设置为1,其他所有标志都设置为0。通过这种方式,您可以使用逐位运算符在单个整数中传递许多二进制值。请参阅此以获取更多(可能更准确)信息。