Это просто константы, которые отображаются на число, например, SORT_NUMERIC
(константа, используемая функциями сортировки) - это целое число 1
.
Посмотрите примеры для json_encode()
.
Как видите, каждый флаг равен 2 n .Таким образом, |
может использоваться для указания нескольких флагов .
Например, предположим, что вы хотите использовать флаг JSON_FORCE_OBJECT
(16
или 00010000
) и JSON_PRETTY_PRINT
(128
или 10000000
).
Битовый оператор ИЛИ (|
) включит бит, если бит одного из операндов включен ...
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 .
Таким образом, оба флага могут быть установлены с побитовыми операторами.