Я заметил, что некоторые функции в 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. Таким образом, вы можете передавать множество двоичных значений в одном целых числах с использованием битовых операторов. См. Это для получения дополнительной (и, вероятно, более точной) информации .
Они просто обертывают в нем значения. Поэтому вам не нужно заботиться о том, что именно нужно функции.