json_encode($list, 15) - 什么是 15?

Yev*_*yev 1 php json laravel laravel-blade

我注意到,laravel 刀片@json($list)指令(https://laravel.com/docs/7.x/blade

正在转换为

<?php echo json_encode($list, 15, 512) ?>
Run Code Online (Sandbox Code Playgroud)

什么是15

我在可用选项中没有看到此选项

选项位掩码包括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您可以尝试解码更多这样的指令

{{ '@json($list)'}}
Run Code Online (Sandbox Code Playgroud)

d3L*_*d3L 5

这是OR ing 这些选项的结果:

JSON_HEX_QUOT | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_TAG
Run Code Online (Sandbox Code Playgroud)

151111二进制的,转储我们可以看到的所有 JSON 常量

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

    echo "$c ".decbin($v)."\n";
}
Run Code Online (Sandbox Code Playgroud)

JSON_HEX_TAG 1
JSON_HEX_AMP 10
JSON_HEX_APOS 100
JSON_HEX_QUOT 1000
...
Run Code Online (Sandbox Code Playgroud)

这些选项组合在一起给出结果数字111115十进制。