Как добавить несколько параметров в функцию json_encode по условию? - PullRequest
1 голос
/ 07 мая 2020

Это нормально:

$data = json_encode(
    $data,
    JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT
);

Я хочу сделать вот так:

$options = "JSON_UNESCAPED_UNICODE";
if ($pretty) $options .= " | JSON_PRETTY_PRINT";
$data = json_encode(
    $data,
    $options
);

Но это не работает, потому что $ options не является строкой или массивом.

Как это сделать?

1 Ответ

3 голосов
/ 07 мая 2020

PHP не Bash. Код и строки являются ортогональными понятиями.

JSON_UNESCAPED_UNICODE и JSON_PRETTY_PRINT - целые числа. Оператор | объединяет две целочисленные битовые маски. Поэтому, чтобы присоединиться к ним, вы должны просто $options |= JSON_PRETTY_PRINT и не должны использовать кавычки.

$options = JSON_UNESCAPED_UNICODE;
if ($pretty) $options |= JSON_PRETTY_PRINT;
$data = json_encode(
    $data,
    $options
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...