正在尝试理解debug_backtrace上的php手册中的这个条目。
我不明白他们所说的“这个参数是...的位掩码”是什么意思。
我已经做了位掩码的网络搜索,我的头都晕了,所以我决定我并不是真的想了解它的细节,而只是想知道我应该如何在这个功能中添加选项。
我是否将两个选项都放入,如
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, DEBUG_BACKTRACE_IGNORE_ARGS)如果我想要两个和其中一个如果我只想要那一个?
发布于 2012-07-01 03:10:38
这意味着您可以使用按位OR运算符组合选项:|。
例如:
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS);有关位掩码的更多详细信息,请访问:http://en.wikipedia.org/wiki/Mask_(computing)
发布于 2013-05-22 18:21:56
请注意,这两个常量(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。
发布于 2012-07-01 03:20:49
常量的十进制值为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);https://stackoverflow.com/questions/11276870
复制相似问题