php接口返回数组应统一使用data+code+msg结构:code为整数状态码,msg为简明提示,data始终为数组(空时为[]);分页需含list/total等元信息;错误响应结构一致;避免null/false混用、对象未转数组、键名不统一等问题。

PHP 接口返回数组时,核心是统一结构、明确语义、兼顾可读性与机器解析。不推荐直接 return $data,而应封装为标准响应格式。
统一响应结构(推荐使用 data + code + msg)
绝大多数 RESTful 接口应返回一致的顶层结构,便于前端统一处理:
- code:状态码(如 0 表示成功,非 0 表示错误,建议用整数,避免字符串)
- msg:简明提示信息(面向开发者或用户,不包含敏感内容)
-
data:实际业务数据,始终为数组(即使为空也设为
[],而非null或省略)
示例:
return [
'code' => 0,
'msg' => 'success',
'data' => [
'id' => 123,
'name' => '张三',
'tags' => ['php', 'api']
]
];
空数据/分页列表需显式表达
避免让调用方猜测空值含义。列表接口即使无结果,data 仍应为数组:
立即学习“PHP免费学习笔记(深入)”;
- 查无结果:
'data' => [] - 分页结果:统一用
'list'键包裹数组,并附带'total'、'page'等元信息
示例(分页):
return [
'code' => 0,
'msg' => 'ok',
'data' => [
'list' => [],
'total' => 0,
'page' => 1,
'size' => 10
]
];
错误响应保持结构一致
失败时仍返回完整三字段结构,仅改变 code 和 msg,data 可为 [] 或含调试信息的关联数组(生产环境建议清空 data 或仅留必要上下文):
return [
'code' => 404,
'msg' => '用户不存在',
'data' => []
];
开发阶段可临时加入 'debug' => [...],但上线前应移除或由配置控制。
避免常见陷阱
以下写法虽能运行,但不利于协作和维护:
- 混用
null、false、[]表示“无数据”——统一用空数组 - 响应中出现 PHP 特有类型(如
stdClass对象)——始终用array,必要时用(array)$obj转换 - 键名大小写混乱(如
UserID和user_id并存)——全项目统一小写下划线(user_id)或小驼峰(userId),推荐前者 - 在
data外直接塞业务字段(如'user' => [...])——破坏约定,增加前端适配成本











