10

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?

2
  • possible duplicate of PHP function flags, how? Commented Mar 9, 2012 at 14:06
  • Just var_dump() the cosntant, it'll show you the content. Commented Mar 9, 2012 at 14:07

2 Answers 2

14

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.

Sign up to request clarification or add additional context in comments.

1 Comment

Also, these are called "bit flags".
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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.