
本文讲解 PHP 中嵌套数组的正确构建方式,重点解决因错误赋值导致 addresseeList 结构扁平化、JSON 输出不符合预期的问题,并提供可直接运行的修正示例与关键注意事项。
本文讲解 php 中嵌套数组的正确构建方式,重点解决因错误赋值导致 `addresseelist` 结构扁平化、json 输出不符合预期的问题,并提供可直接运行的修正示例与关键注意事项。
在 PHP 中,数组结构直接影响 json_encode() 的输出结果。题中目标是生成一个包含 对象数组(array of objects) 的 JSON 字段 addresseeList,即:
"addresseeList": [{"mobile":"1111","correlationLabel":"corelation ejemplo"}]
但实际得到的是:
"mobile":"1111","correlationLabel":"corelation ejemplo","addresseeList":["1111","corelation ejemplo"]
根本原因在于错误地将 'mobile' 和 'correlationLabel' 直接赋值给 $data 根数组(如 $data['mobile'] = '1111'),而非作为子数组元素嵌套在 addresseeList 内部。
✅ 正确做法是:为 addresseeList 分配一个索引数组,并将关联子数组(含 mobile 和 correlationLabel 键值对)作为其唯一元素推入。使用 [] 语法可安全追加元素,避免覆盖或污染根数组:
$data = [];
$data['country'] = '+57';
$data['message'] = 'test';
$data['messageFormat'] = 0;
$data['addresseeList'][] = [
'mobile' => '1111',
'correlationLabel' => 'corelation ejemplo'
];
// 输出格式化 JSON 验证结构
echo json_encode($data, JSON_PRETTY_PRINT);
运行后输出:
{
"country": "+57",
"message": "test",
"messageFormat": 0,
"addresseeList": [
{
"mobile": "1111",
"correlationLabel": "corelation ejemplo"
}
]
}
⚠️ 关键注意事项:
- ❌ 禁止在
addresseeList内部直接写$data['mobile'] = ...—— 这会把键写入顶层$data,造成数据错位; - ✅ 始终用
$data['addresseeList'][] = [...]或$data['addresseeList'] = [[...]]显式构造子数组; - 若需添加多个接收人,重复调用
$data['addresseeList'][] = [...]即可自动扩展索引; - 推荐使用短数组语法
[]替代array()(PHP 5.4+),提升可读性; - 调试时可用
var_dump($data)或print_r($data)检查运行时数组结构,再调用json_encode()验证最终 JSON。
遵循此模式,即可确保嵌套层级精准对应 JSON 对象数组需求,避免 API 通信中因结构不匹配导致的解析失败。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











