json_encode ($ list, 15) - что такое 15? - PullRequest
1 голос
/ 28 мая 2020

Я заметил, что директива laravel blade @json($list) (https://laravel.com/docs/7.x/blade)

конвертируется в

<?php echo json_encode($list, 15, 512) ?>

Whait is 15

1012 * Я не вижу этот вариант среди доступных опций

варианты Bitmask состоящий из JSON_FORCE_OBJECT, JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_INVALID_UTF8_IGNORE, JSON_INVALID_UTF8_SUBSTITUTE, JSON_NUMERIC_CHECK, JSON_PARTIAL_OUTPUT_ON_ERROR, JSON_PRESERVE_ZERO_FRACTION , JSON_PRETTY_PRINT, JSON_UNESCAPED_LINE_TERMINATORS, JSON_UNESCAPED_SLASHES, JSON_UNESCAPED_UNICODE, JSON_THROW_ON_ERROR.

PS вы можете попробовать расшифровать другие директивы

1020 таких

1 Ответ

5 голосов
/ 28 мая 2020

Это результат OR следующих опций:

JSON_HEX_QUOT | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_TAG

15 - 1111 в двоичном формате, выгрузив все JSON константы, которые мы можем увидеть

foreach (get_defined_constants() as $c => $v) {
    if (substr($c, 0, 4) !== "JSON") continue;

    echo "$c ".decbin($v)."\n";
}

Это

JSON_HEX_TAG 1
JSON_HEX_AMP 10
JSON_HEX_APOS 100
JSON_HEX_QUOT 1000
...

Эти параметры вместе дают результирующее число 1111 или 15 в десятичном виде.

...