尝试在debug_backtrace
上的php手册中理解这个条目。
我不明白他们的意思是“这个参数是......的位掩码”
我已经在bitmasks上进行了网页搜索,我的脑袋正在旋转,所以我决定不想了解它的细节,只是知道如何将选项添加到该功能。
我是否按照
输入两个选项debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, DEBUG_BACKTRACE_IGNORE_ARGS)
如果我想要这两个,如果我只想要那个,那么其中之一?
答案 0 :(得分:13)
请注意,这两个常量(DEBUG_BACKTRACE_PROVIDE_OBJECT,DEBUG_BACKTRACE_IGNORE_ARGS)的含义不同。当DEBUG_BACKTRACE_PROVIDE_OBJECT提供了另一个对象时,DEBUG_BACKTRACE_IGNORE_ARGS会在存在时删除args。
由于这些常量最常见的用例是减少内存使用量,因此内存消耗最少的方法是:
debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
不是
// false friend!
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS);
它会覆盖默认的DEBUG_BACKTRACE_PROVIDE_OBJECT,并且还会忽略DEBUG_BACKTRACE_IGNORE_ARGS。
答案 1 :(得分:11)
常量的十进制值为2 ^ n,或二进制的(10)^ n。例如 - 1,10,100,1000等(二进制)。
说a=001, b=010, c=100
:
您可以按位或依次执行,例如a
和b
。这意味着如果a或b中的相同位为“on”,则每个位都将“打开”。
a | b == 011
这是一个位掩码。检查位掩码是否包含a
bitmask & a != 0
哪个是
011 & 001 == 001 != 0
但是,因为c不在位掩码中:
bitmask & c == 011 & 100 == 0
因此,要在位掩码中包含a和b,可以使用二进制或运算符。
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS);
答案 2 :(得分:8)
这意味着您将选项与按位OR运算符组合在一起:|
。
例如:
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS);
有关位掩码的更多详细信息:http://en.wikipedia.org/wiki/Mask_(computing)