我注意到PHP中的一些函数使用 flags 作为参数。是什么让他们独特而不是普通的字符串参数?我问,因为我想在我自己的自定义函数上使用它们,但我很好奇这个过程是做什么的。
编辑:总结一下,何时最好使用标记创建自定义函数,何时不?
答案 0 :(得分:10)
它们只是映射到数字的常量,例如SORT_NUMERIC
(排序函数使用的常量)是整数1
。
如您所见,每个标志都是2 n 。这样,|
可用于指定多个标志。
例如,假设您要使用标记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"
这就是两个标志可以通过按位运算符 set 的方式。
答案 1 :(得分:3)
通常,标志是连续2的幂的整数,因此每个都有一个位设置为1而所有其他位设置为0.这样,您可以使用逐位运算符在单个整数中传递许多二进制值。请参阅此内容以获取更多(可能更准确)information。