PHP function flags, how?

后端 未结 1 366
遇见更好的自我
遇见更好的自我 2020-11-29 06:16

I\'m attempting to create a function with flags as its arguments but the output is always different with what\'s expected :

define(\"FLAG_A\", 1);  
define(\         


        
相关标签:
1条回答
  • 2020-11-29 06:52

    Flags must be powers of 2 in order to bitwise-or together properly.

    define("FLAG_A", 0x1);
    define("FLAG_B", 0x2);
    define("FLAG_C", 0x4);
    function test_flags($flags) {
      if ($flags & FLAG_A) echo "A";
      if ($flags & FLAG_B) echo "B";
      if ($flags & FLAG_C) echo "C";
    }
    test_flags(FLAG_B | FLAG_C); # Now the output will be BC
    

    Using hexadecimal notation for the constant values makes no difference to the behavior of the program, but is one idiomatic way of emphasizing to programmers that the values compose a bit field. Another would be to use shifts: 1<<0, 1<<1, 1<<2, &c.

    0 讨论(0)
提交回复
热议问题