json_decode()返回对象或关联数组取决于第二个参数:false(默认)返回对象,用->取值;true返回数组,用['key']取值;取值前需isset判断或用??避免notice。

PHP 中 json_decode() 返回的结果,取值方式取决于你是否启用了关联数组模式(即第二个参数是否为 true)。核心就一点:**看返回的是对象还是数组,再用对应语法取值**。
判断返回类型:对象 or 关联数组?
默认情况下(不传第二个参数或传 false),json_decode() 返回 stdClass 对象,要用 -> 取属性;
如果显式传 true,则返回 关联数组,要用 ['key'] 方式取值。
-
$data = json_decode('{"name":"张三","age":25}');→ 对象 →$data->name -
$data = json_decode('{"name":"张三","age":25}', true);→ 数组 →$data['name']
安全取值:避免 Notice 报错
JSON 数据可能缺失字段,直接取值会触发 PHP Notice。推荐先判断是否存在:
- 对象方式:
isset($data->name) ? $data->name : '默认值' - 数组方式:
isset($data['name']) ? $data['name'] : '默认值' - PHP 7+ 可用空合并运算符:
$data->name ?? '未知'或$data['name'] ?? '未知'
嵌套结构怎么取?
比如 JSON 是 {"user":{"profile":{"nickname":"小明"}}}:
- 对象模式:
$data->user->profile->nickname(注意每层都要isset或用??防错) - 数组模式:
$data['user']['profile']['nickname'] - 混合情况(如外层数组、内层对象):按实际类型分段处理,不强求统一
调试小技巧:快速确认结构
不确定解码后是什么类型?加一行调试:
-
var_dump($data);—— 看输出是object(stdClass)还是array -
echo gettype($data);—— 直接输出类型名 -
print_r($data);—— 更易读的结构展示
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











