Что такое флагов PHP в аргументах функции?

Я заметил, что некоторые функции в PHP используют флаги в качестве аргументов. Что делает их уникальными, а не просто строковыми аргументами? Я прошу, поскольку я хочу использовать их в своих собственных пользовательских функциях, но мне интересно, что это за процесс.

Изменить: Подвести итоги, когда лучше создать пользовательскую функцию с флагами, а когда нет ?

Это просто константы, которые сопоставляются с числом, например SORT_NUMERIC (константа, используемая функциями сортировки) – это целое число 1 .

Ознакомьтесь с примерами для json_encode() .

Как вы можете видеть, каждый флаг равен 2 n . Таким образом, | может использоваться для указания нескольких флагов .

Например, предположим, что вы хотите использовать флаг JSON_FORCE_OBJECT ( 16 или 00010000 ) и JSON_PRETTY_PRINT ( 128 или 10000000 ).

Побитовый оператор OR ( | ) включит бит, если бит бит операнда включен …

 JSON_FORCE_OBJECT | JSON_PRETTY_PRINT 

… внутренне ….

 00010000 | 1000000 

…который…

 10010000 

Вы можете проверить это с помощью …

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

CodePad .

Таким образом, оба флага могут быть установлены с помощью побитовых операторов.

Обычно флаги представляют собой целые числа, которые являются последовательными степенями 2, так что каждый из них имеет один бит, равный 1, а все остальные равны 0. Таким образом, вы можете передавать множество двоичных значений в одном целых числах с использованием битовых операторов. См. Это для получения дополнительной (и, вероятно, более точной) информации .

Они просто обертывают в нем значения. Поэтому вам не нужно заботиться о том, что именно нужно функции.