What are PHP flags in function arguments?
Asked Answered
V

2

9

I noticed that some functions in PHP use flags as arguments. What makes them unique instead of plain string arguments? I'm asking since I want to use them on my own custom functions but am curious as to what the process is for doing so.

Edit: TO summarize, when is it best to create a custom function with flags and when is it not?

Veranda answered 9/3, 2012 at 14:3 Comment(2)
possible duplicate of PHP function flags, how?Curative
Just var_dump() the cosntant, it'll show you the content.Bernice
M
13

They are just constants which map to a number, e.g. SORT_NUMERIC (a constant used by sorting functions) is the integer 1.

Check out the examples for json_encode().

As you can see, each flag is 2n. This way, | can be used to specify multiple flags.

For example, suppose you want to use the flag JSON_FORCE_OBJECT (16 or 00010000) and JSON_PRETTY_PRINT (128 or 10000000).

The bitwise operator OR (|) will turn the bit on if either operand's bit is on...

JSON_FORCE_OBJECT | JSON_PRETTY_PRINT

...is internally....

00010000 | 1000000

...which is...

10010000

You can check it with...

var_dump(base_convert(JSON_PRETTY_PRINT | JSON_FORCE_OBJECT, 10, 2));
// string(8) "10010000"

CodePad.

This is how both flags can be set with bitwise operators.

Muttonhead answered 9/3, 2012 at 14:5 Comment(1)
Also, these are called "bit flags".Stevana
I
4

Usually flags are integers that are consecutive powers of 2, so that each has one bit set to 1 and all others to 0. This way you can pass many binary values in a single integer using bit-wise operators. See this for more (and probably more accurate) information.

Indiscipline answered 9/3, 2012 at 14:10 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.