在 PHP 中,json_encode()
函数用于将 PHP 变量(通常是数组或对象)编码为 JSON 格式的字符串。json_encode($arr)
和 json_encode($arr, 320)
的区别主要在于第二个参数,该参数是一个由多个 JSON_*
常量按位或(|
)组合而成的选项掩码,用于控制编码过程中的行为。
json_encodearr_2">1. json_encode($arr)
当只传递一个参数时,即 json_encode($arr)
,它使用默认的编码选项对数组 $arr
进行编码。默认情况下,json_encode()
会将数组编码为标准的 JSON 字符串,遵循 JSON 规范。例如:
php">$arr = array('name' => 'John', 'age' => 30);
$json = json_encode($arr);
echo $json;
// 输出: {"name":"John","age":30}
json_encodearr_320_11">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
。示例代码如下:
php">$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"}