PHP多维数组转JSON只需调用json_encode()函数,支持任意嵌套结构;含中文时需加JSON_UNESCAPED_UNICODE参数避免Unicode转义;转换失败应检查NaN、循环引用等并用json_last_error_msg()调试;API输出需设置header('Content-Type: application/json; charset=utf-8')。

PHP多维数组转JSON非常简单,直接用内置函数 json_encode() 就行,它原生支持任意深度的关联数组、索引数组甚至混合嵌套结构。
基础写法:一行搞定
只要数组里不含资源(resource)、闭包(Closure)或不可序列化的对象,默认调用 json_encode($array) 即可:
- // 示例多维数组
- $data = [
- 'user' => [
- 'id' => 123,
- 'name' => '张三',
- 'tags' => ['php', 'web', 'json']
- ],
- 'status' => true
- ];
- // 转成 JSON 字符串
- $json = json_encode($data);
- // 输出:{"user":{"id":123,"name":"张三","tags":["php","web","json"]},"status":true}
中文不乱码?加个参数
如果数组含中文,默认输出的是 Unicode 转义(如 "\u4f60\u597d"),想显示原始中文,加上 JSON_UNESCAPED_UNICODE 标志:
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
- $json = json_encode($data, JSON_UNESCAPED_UNICODE);
- // 输出:{"user":{"id":123,"name":"张三","tags":["php","web","json"]},"status":true}
调试失败?记得检查错误
不是所有数组都能成功转 JSON。常见问题包括:含 NaN、Infinity、循环引用、非 UTF-8 字符串、对象没实现 JsonSerializable 接口等。建议加错误处理:
立即学习“PHP免费学习笔记(深入)”;
- $json = json_encode($data, JSON_UNESCAPED_UNICODE);
- if ($json === false) {
- // 查看具体错误原因
- echo json_last_error_msg(); // PHP 5.5+
- // 或用 json_last_error() 获取错误码
- }
输出到浏览器?别忘了设 Header
如果用于 API 接口返回,建议显式设置 Content-Type:
- header('Content-Type: application/json; charset=utf-8');
- echo json_encode($data, JSON_UNESCAPED_UNICODE);


















