【发布时间】:2012-03-09 14:03:49
【问题描述】:
我注意到 PHP 中的一些函数使用 flags 作为参数。是什么让它们独一无二而不是普通的字符串参数?我之所以问,是因为我想在自己的自定义函数上使用它们,但很好奇这样做的过程是什么。
编辑:总结一下,什么时候最好创建带有标志的自定义函数,什么时候不?
【问题讨论】:
-
只需
var_dump(),它会显示内容。
我注意到 PHP 中的一些函数使用 flags 作为参数。是什么让它们独一无二而不是普通的字符串参数?我之所以问,是因为我想在自己的自定义函数上使用它们,但很好奇这样做的过程是什么。
编辑:总结一下,什么时候最好创建带有标志的自定义函数,什么时候不?
【问题讨论】:
var_dump() ,它会显示内容。
它们只是映射到数字的常量,例如SORT_NUMERIC(排序函数使用的常量)是整数1。
Check out the examples 为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"
这就是使用位运算符设置两个标志的方式。
【讨论】:
通常,标志是 2 的连续幂的整数,因此每个标志的一个位设置为 1,其他位设置为 0。这样,您可以使用位运算符在单个整数中传递多个二进制值。请参阅此了解更多信息(可能更准确)information。
【讨论】: