php解析json数组核心靠json_decode(),推荐设true参数得关联数组,逐层用isset()和is_array()安全访问,解码后必须检查null并处理错误。

PHP解析JSON数组,核心就靠 json_decode() 这一个函数,搭配合理的数据访问方式和错误检查,就能稳稳处理从简单到多层嵌套的各种结构。
基础解码:用对参数是关键
json_decode() 默认把JSON转成PHP对象(stdClass),但绝大多数实际场景中,推荐传入第二个参数 true,让它返回关联数组。这样写起来更直观,也方便后续循环和动态键名操作。
- 解析为数组:
$data = json_decode($jsonString, true);→ 后续用$data['key']访问 - 解析为对象:
$data = json_decode($jsonString);→ 后续用$data->key访问 - 如果JSON里有中文,确保原始字符串是UTF-8编码;PHP 5.4+ 默认能正确显示,无需额外处理
安全访问嵌套字段:先判断再取值
深层结构如 {"results":{"my-input":{"results.json":{"embeddings":[10,13,14]}}}},直接写 $data['results']['my-input']['results.json']['embeddings'] 很容易因某一层缺失而报错或返回null。
- 逐层检查是否存在:用
isset()或array_key_exists() - 提取数组值时加类型判断:
is_array($embeddings) && !empty($embeddings) - 示例安全写法:
if (isset($data['results']['my-input']['results.json']['embeddings']) && is_array($data['results']['my-input']['results.json']['embeddings'])) {<br> $vals = $data['results']['my-input']['results.json']['embeddings'];<br>}
遍历JSON数组并生成HTML表格
当JSON本身是一个对象数组(例如API返回的用户列表),用 foreach 配合关联数组是最自然的方式。
- 先确认顶层是数组:
is_array($data) && !empty($data) - 循环每个记录:
foreach ($data as $item) { echo "<tr> <td>{$item['name']}</td> <td>{$item['email']}</td> </tr>"; } - 若字段可能为空,建议用空合并操作符:
{$item['phone'] ?? '未填写'}(PHP 7.0+)
错误处理不能省:解析失败要兜底
json_decode() 在格式出错时会静默返回 null,不检查就直接访问会导致 Notice 或 Warning。
- 每次解码后立刻检查:
if ($data === null) { die('JSON解析失败:' . json_last_error_msg()); } - 常见错误包括:非法字符、BOM头、单引号代替双引号、末尾多余逗号
- 调试时可用
var_dump($jsonString)看原始字符串是否符合JSON规范
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











