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

devtools/2025/2/15 20:54:10/

在 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"}

总结

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

http://www.ppmy.cn/devtools/159145.html

相关文章

ESLint 规则解析:为什么应避免在 in 操作符左侧使用否定?

目录 引言 规则背景 为何需要这条规则? 问题示例 错误写法 错误解析逻辑 正确实践 方案 1:显式使用括号 方案 2:避免直接否定 配置 ESLint 规则 深度解析 运算符优先级问题 历史问题案例 总结 引言 在 JavaScript 开发中&…

WebSocket 握手过程

文章目录 1. WebSocket 握手过程概述2. 客户端发送握手请求3. 服务器响应握手请求4. 客户端验证握手响应5. 建立 WebSocket 连接6. 安全性与注意事项7. 应用示例 在现代 Web 开发中,WebSocket 协议因其高效的实时通信能力而被广泛应用。WebSocket 允许客户端和服务器…

RAG(检索增强生成)落地:基于阿里云opensearch视线智能问答机器人与企业知识库

文章目录 一、环境准备二、阿里云opensearch准备1、产品文档2、准备我们的数据3、上传文件 三、对接1、对接文本问答 一、环境准备 # 准备python环境 conda create -n opensearch conda activate opensearch# 安装必要的包 pip install alibabacloud_tea_util pip install ali…

C语言中隐式类型转换 截断和整型提升

C的整形算数总是至少以缺省整形类型的精度来进行的 为了获得这个精度 表达式中的字符和短整形操作数在使用之前被转换为普通整形 这种类型转换成为整型提升 给出代码实例↓ #include<stdio.h> int main() {//char signed charchar a 3;char b 127;char c a b;pri…

【后端发展路径】基础技术栈、工程能力进阶、高阶方向、职业发展路径

后端开发是一个技术深度和广度并重的领域,以下是完整的职业发展路径和学习规划,分为技术成长、工程能力、职业方向等维度,适合不同阶段的开发者参考: 一、基础技术栈 编程语言 必学:Java(Spring生态)/Go(高性能场景)/Python(快速开发)核心能力:理解语言特性(并发、…

RocketMQ和Kafka如何实现顺序写入和顺序消费?

0 前言 先说明kafka&#xff0c;顺序写入和消费是Kafka的重要特性&#xff0c;但需要正确的配置和使用方式才能保证。本文需要解释清楚Kafka如何通过分区来实现顺序性&#xff0c;以及生产者和消费者应该如何配合。   首先&#xff0c;顺序写入。Kafka的消息是按分区追加写入…

第十一篇:EMC的“电磁护盾”——三电系统干扰抑制实战

副标题&#xff1a;如何在数字与模拟世界的夹缝中&#xff0c;为三电系统打造“电磁结界” 核心隐喻&#xff1a;电磁兼容&#xff08;EMC&#xff09;即“数字母体”的防御机制 - 绿色代码雨 &#xff1a;将电磁干扰&#xff08;EMI&#xff09;视为Matrix中失控的数据流…

部署 DeepSeek R1各个版本所需硬件配置清单

DeepSeek-R1 通过其卓越的推理性能和灵活的训练机制&#xff0c;在 2025 年的春节期间受到了广泛关注。 DeepSeek-R1 是一款高性能的 AI 推理模型&#xff0c;主要通过强化学习技术来增强模型在复杂任务场景下的推理能力。 在本地部署 DeepSeek-R1 时&#xff0c;尤其是完整的…