多数组参数获取场景下无法提取Body中所有记录的CompanyName如何解决
多数组下CompanyName参数提取失效解决方案
问题根因
你使用的$decodedJson->Body->Deeds->Deed->CompanyName语法默认Deed字段为单个对象,但实际业务返回结构中,Body->Deeds->Deed通常为包含多条记录的索引数组,直接指向CompanyName属性会因寻址失败返回空值。
修复方案
第一步:先确认返回结构
执行下方代码打印Deed字段属性,确认其数据类型:
var_dump($decodedJson->Body->Deeds->Deed);
第二步:根据结构调整取值逻辑
- 需提取所有Deed记录下的CompanyName时,使用循环遍历取值:
$companyNames = []; foreach ($decodedJson->Body->Deeds->Deed as $deedItem) { $companyNames[] = $deedItem->CompanyName; }
执行后$companyNames即为所有CompanyName参数组成的数组。
- 仅需提取第一条Deed记录的CompanyName时,直接加索引取值:
$firstCompanyName = $decodedJson->Body->Deeds->Deed[0]->CompanyName;
额外注意事项
如果你调用json_decode时第二个参数设置为true,返回结果会是关联数组而非对象,需将取值语法中的箭头替换为中括号:
// 关联数组下的单条取值示例 $firstCompanyName = $decodedJson['Body']['Deeds']['Deed'][0]['CompanyName'];
内容的提问来源于stack exchange,提问作者Boris
相关产品推荐
相关产品推荐

