php数组转json最标准可靠的方式是使用json_encode()函数,支持关联数组转json对象、索引数组转json数组,需配合json_unescaped_unicode避免中文乱码、json_pretty_print调试格式化,并检查返回值防止资源等不可序列化类型导致失败。

PHP数组转JSON直接用 json_encode() 函数就行,这是最标准、最可靠的方式。
基础用法:普通数组转JSON字符串
只要传入一个PHP数组(索引数组或关联数组),json_encode() 就会返回对应的JSON格式字符串:
-
// 关联数组 → JSON对象
$data = ['name' => '张三', 'age' => 25];<br> $json = json_encode($data);<br> // 输出:{"name":"张三","age":25} -
// 索引数组 → JSON数组
$list = ['apple', 'banana', 'orange'];<br> $json = json_encode($list);<br> // 输出:["apple","banana","orange"]
常见注意事项和实用参数
实际开发中要注意编码、中文乱码、空值处理等问题,可通过参数优化:
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
- 确保PHP文件和数据库都是UTF-8编码,否则中文可能变成
null或乱码 - 加 JSON_UNESCAPED_UNICODE 让中文不被转义:
json_encode($data, JSON_UNESCAPED_UNICODE) - 调试时可加 JSON_PRETTY_PRINT 让输出更易读:
json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) - 遇到无法序列化的数据(如资源、闭包),json_encode() 会返回
false,建议检查返回值:if ($json === false) { echo json_last_error_msg(); }
配合HTTP响应头一起用(API常用)
如果是在写接口,别忘了设置正确的响应头:
header('Content-Type: application/json; charset=utf-8');echo json_encode($data, JSON_UNESCAPED_UNICODE);
不支持的数据类型要提前处理
json_encode() 不支持资源类型(如MySQL连接)、函数、闭包、SimpleXML对象等。遇到这类数据需手动转换:
- 对象可实现 JsonSerializable 接口
- 时间戳建议转成字符串:
date('Y-m-d H:i:s', $time) - 数据库查询结果建议用
mysqli_fetch_all($result, MYSQLI_ASSOC)或PDO的fetch(PDO::FETCH_ASSOC)得到纯数组再编码
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










