欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > 【php】php json_encode($arr) 和 json_encode($arr, 320) 有什么区别?

【php】php json_encode($arr) 和 json_encode($arr, 320) 有什么区别?

2025/2/23 1:27:08 来源:https://blog.csdn.net/Kevin_Gates/article/details/145613326  浏览:    关键词:【php】php json_encode($arr) 和 json_encode($arr, 320) 有什么区别?

在 PHP 中,json_encode() 函数用于将 PHP 变量(通常是数组或对象)编码为 JSON 格式的字符串。json_encode($arr)json_encode($arr, 320) 的区别主要在于第二个参数,该参数是一个由多个 JSON_* 常量按位或(|)组合而成的选项掩码,用于控制编码过程中的行为。

1. json_encode($arr)

当只传递一个参数时,即 json_encode($arr),它使用默认的编码选项对数组 $arr 进行编码。默认情况下,json_encode() 会将数组编码为标准的 JSON 字符串,遵循 JSON 规范。例如:

$arr = array('name' => 'John', 'age' => 30);
$json = json_encode($arr);
echo $json; 
// 输出: {"name":"John","age":30}

2. json_encode($arr, 320)

json_encode($arr, 320) 传递了第二个参数 320,这个数字实际上是两个 JSON_* 常量的按位或结果:JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES

  • JSON_UNESCAPED_UNICODE(常量值为 256):在默认情况下,json_encode() 会将非 ASCII 字符转义为 \uXXXX 格式。而使用 JSON_UNESCAPED_UNICODE 选项后,非 ASCII 字符将以原始的 UTF-8 编码形式输出。
  • JSON_UNESCAPED_SLASHES(常量值为 64):默认情况下,json_encode() 会对斜杠(/)进行转义,变为 \/。使用 JSON_UNESCAPED_SLASHES 选项后,斜杠将不会被转义。

因此,320 = 256 + 64,即 JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES。示例代码如下:

$arr = array('name' => '张三','url' => 'https://example.com'
);// 默认编码
$defaultJson = json_encode($arr);
echo "默认编码: $defaultJson\n"; 
// 输出: {"name":"\u5f20\u4e09","url":"https:\/\/example.com"}// 使用 320 选项编码
$optionJson = json_encode($arr, 320);
echo "使用 320 选项编码: $optionJson\n"; 
// 输出: {"name":"张三","url":"https://example.com"}

总结

  • json_encode($arr) 使用默认选项进行编码,可能会对非 ASCII 字符和斜杠进行转义。
  • json_encode($arr, 320) 使用 JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES 选项,非 ASCII 字符以原始 UTF-8 形式输出,斜杠不被转义。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词