json_encode($list, 15) - 啥是 15?
Posted
技术标签:
【中文标题】json_encode($list, 15) - 啥是 15?【英文标题】:json_encode($list, 15) - what is 15?json_encode($list, 15) - 什么是 15? 【发布时间】:2020-09-15 05:49:38 【问题描述】:我注意到了,laravel 刀片 @json($list)
指令 (https://laravel.com/docs/7.x/blade)
正在转换为
<?php echo json_encode($list, 15, 512) ?>
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。 P>的
PS 你可以尝试解码更多类似的指令
'@json($list)'
【问题讨论】:
那些JSON_*
constants 都是整数。 $options
参数是一个整数位掩码。如果您知道所需的值,则无需使用常量
【参考方案1】:
这是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
。
【讨论】:
以上是关于json_encode($list, 15) - 啥是 15?的主要内容,如果未能解决你的问题,请参考以下文章
json_encode在编码字符串时会自动加上双引号,怎么能去掉?