
本文详解如何使用 PHP 正确解析包含嵌套结构的 JSON 响应,特别是当目标数据位于 data 键下的数组中时,避免因误判顶层结构类型导致 foreach 失败的问题。
本文详解如何使用 php 正确解析包含嵌套结构的 json 响应,特别是当目标数据位于 `data` 键下的数组中时,避免因误判顶层结构类型导致 `foreach` 失败的问题。
在处理来自 TronGrid 等区块链 API 的 JSON 响应时,开发者常遇到“无法遍历 txID”的问题——看似是 foreach 失效,实则是对 JSON 数据结构理解有误。你提供的 JSON 并非根级数组,而是一个关联数组(即 JSON 对象),其有效数据全部封装在顶层键 'data' 对应的值中。该值才是真正的索引数组,包含多个交易对象。
错误写法(直接遍历 $array):
$array = json_decode($content, true);
foreach ($array as $value) {
echo $value['txID']; // ❌ 错误:$array 是对象结构,$value 可能是 'data'、'success' 或 'meta',均不含 'txID'
}
✅ 正确做法:先定位到 'data' 子数组,再遍历其中每个交易项:
$obj = json_decode($content, true);
// 检查解码是否成功且 data 存在
if (json_last_error() !== JSON_ERROR_NONE) {
die('JSON 解析失败:' . json_last_error_msg());
}
if (!isset($obj['data']) || !is_array($obj['data'])) {
die('响应中缺少有效的 data 数组');
}
// 安全遍历 data 中的每一笔交易
foreach ($obj['data'] as $tx) {
if (isset($tx['txID'])) {
echo $tx['txID'] . PHP_EOL;
}
}
输出示例(对应你提供的 JSON):
b7db5efabb829c19ecffb642e726212e7c06ad5b44bd2c0324a525ed4991923a c3c9ac55378a212f81f3b242b836fcd2a2376c43f8449da8a4787895dcd6d637 c171d5fc085aac3ebaaa68280a72452f3b1a372cf605ef3f5c593a555b7c8daa
⚠️ 关键注意事项:
-
json_decode($content, true)返回关联数组(推荐),若省略true则返回stdClass对象,需用$obj->data和$tx->txID访问; - 务必检查
json_last_error()防止解析失败静默出错; - 总是验证
$obj['data']是否存在且为数组,避免未定义索引警告; - 交易字段(如
txID)可能为空或缺失,建议用isset()或??运算符做兜底(例如echo $tx['txID'] ?? 'N/A';)。
掌握这一结构意识——“先定位容器,再遍历内容”——是可靠处理任意层级 JSON 的基础。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











