当前位置: 首页 > news >正文

【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 形式输出,斜杠不被转义。
http://www.dtcms.com/a/13608.html

相关文章:

  • DeepSeek 指导手册(入门到精通)
  • C++从入门到实战(三)缺省参数与函数重载
  • Navicat导入海量Excel数据到数据库(简易介绍)
  • Spring 项目接入 DeepSeek,分享两种超简单的方式!
  • Redis7.0八种数据结构底层原理
  • HTML的入门
  • Vue笔记(十)
  • 深度剖析责任链模式
  • 游戏引擎学习第100天
  • 走进 Tcl 语言:历史、特性与应用
  • C++ ——从C到C++
  • C++,STL容器适配器,stack:栈深入解析
  • docker compose部署flink集群
  • 【Vue中BUG解决】npm error path git
  • macOS 上部署 RAGFlow
  • 【经验分享】Linux 系统安装后内核参数优化
  • 微信小程序医院挂号系统
  • Visual Studio踩过的坑
  • Mac上搭建宝塔环境并部署PHP项目
  • 侯捷 C++ 课程学习笔记:C++ 新标准 11/14 的革新与实战应用
  • 【深入探讨 ResNet:解决深度神经网络训练问题的革命性架构】
  • Qt Designer菜鸟使用教程(实现一个本地英文翻译软件)
  • 《8天入门Trustzone/TEE/安全架构》
  • 从 0 开始本地部署 DeepSeek:详细步骤 + 避坑指南 + 构建可视化(安装在D盘)
  • 零基础入门机器学习 -- 第三章第一个机器学习模型——线性回归
  • java安全中的类加载
  • 【一文读懂】HTTP与Websocket协议
  • Java堆外内存的高效利用与性能优化
  • 【DeepSeek】DeepSeek小模型蒸馏与本地部署深度解析DeepSeek小模型蒸馏与本地部署深度解析
  • DevOps工具链概述