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

【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.kler.cn/a/545386.html

相关文章:

  • Redis07 - Redis底层数据结构
  • 3.3.3 VO-O语法- 语法算子(二)
  • 【深度学习】多目标融合算法(四):多门混合专家网络MMOE(Multi-gate Mixture-of-Experts)
  • three.js 通用 shaderToy着色器使用,切换
  • 2.7 静态方法/构造函数Mock
  • Java面向对象二:三大特性
  • python后端调用Deep Seek API
  • Pyqt6 中 QMediaPlayer 音视频播放
  • vs发布后再linux打包linux版本的安装包
  • BIO、NIO 和 AIO 这三者的区别?
  • 磁盘与mysql的故事
  • 【机器学习】监督学习-决策树-CART(Classification and Regression Tree,分类与回归树)详尽版
  • 安卓手游内存call综合工具/内部call/安卓注入call/数据分析(类人猿学院)
  • MySQL | MySQL安装教程
  • Redis过期删除与内存淘汰策略面试题剖析
  • 前端快速生成接口方法
  • 网络安全知识--网络、网络安全产品及密码产品概述
  • 网络安全抑制 缓解 根除 恢复 网络安全如何解决
  • 麒麟操作系统-MySQL5.7.36二进制安装
  • 原生Three.js 和 Cesium.js 案例 。 智慧城市 数字孪生常用功能列表