1

例如:

class Boolean extends AbstractFilter
{
    const TYPE_BOOLEAN        = 1;
    const TYPE_INTEGER        = 2;
    const TYPE_FLOAT          = 4;
    const TYPE_STRING         = 8;
    const TYPE_ZERO_STRING    = 16;
    const TYPE_EMPTY_ARRAY    = 32;
    const TYPE_NULL           = 64;
    const TYPE_PHP            = 127;
    const TYPE_FALSE_STRING   = 128;
    const TYPE_LOCALIZED      = 256;
    const TYPE_ALL            = 511;

为什么不定义 like 1 2 3 4 5 而定义 1 2 4 8 16?

4

3 回答 3

1

因为您可以对这些数字使用按位运算。它们中的每一个(二进制)代表一个,其余的都代表零。因此,您可以在单个字节上操作一系列选项。比如说,如果你加上 1000 + 0100 你会得到 1100 并且信息会被保留。

同样的逻辑也适用于 json_encode 的第二个参数,比如json_encode($array, JSON_HEX_TAG | JSON_HEX_APOS).

于 2015-08-11T16:22:14.220 回答
0

您可以在此处找到有关您答案的更多详细信息

关于你的问题的建议是那why computer science use 1 2 4 8 16等等..不仅仅是 zend 框架。

于 2015-08-13T16:38:37.283 回答
0

因为您可以在过滤器中对它们进行 OR 操作:

TYPE_INTEGER 或 TYPE_FLOAT 查找整数或浮点数

TYPE_ALL 给出了它:即所有其他值 OR 在一起。

于 2015-08-11T09:49:06.880 回答