PHP中将JSON字符串转为数组需用json_decode($json, true),否则返回对象;需检查JSON合法性,错误时返回null,可用json_last_error()等函数调试;常见于处理前端POST数据或JSON文件,注意UTF-8编码。

PHP 中把 JSON 字符串转成数组,主要用 json_decode() 函数,并设置第二个参数为 true。
基本写法:JSON 字符串 → 关联数组
默认情况下 json_decode() 返回对象,加 true 才返回索引/关联数组:
$json = '{"name":"张三","age":25,"hobbies":["读书","游泳"]}';<br>$arr = json_decode($json, true);<br>var_dump($arr);<br>// 输出:array(3) { ["name"]=> string(6) "张三" ["age"]=> int(25) ["hobbies"]=> array(2) { [0]=> string(6) "读书" [1]=> string(6) "游泳" } }
注意 JSON 格式是否合法
如果 JSON 字符串格式错误(比如中文没加双引号、多逗号、单引号代替双引号),json_decode() 会返回 null,且不报错。建议加判断:
- 用
json_last_error()检查解码状态 - 用
is_array()或is_null()判断结果 - 开发时可用
json_last_error_msg()获取具体错误信息(PHP ≥ 5.5)
常见场景处理建议
- 接收前端 POST 的 JSON 数据:先
file_get_contents('php://input')读原始体,再json_decode(..., true) - 读取 JSON 文件内容:用
file_get_contents($file)读出字符串,再解码 - 含中文的 JSON 要确保 UTF-8 编码,避免乱码;PHP 文件本身也建议保存为 UTF-8 无 BOM
- 如果 JSON 是数组格式(如
[{"id":1},{"id":2}]),解码后直接得到索引数组,无需额外转换
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











