PHP如何向数组添加P_O_NUMBER类型CustomerReferences生成正确SOAP请求
你当前的写法存在两处结构错误:
- 初始数组中
CustomerReferences为单关联数组,仅能存储一条引用记录,无法满足多标签的序列化要求 - 直接使用
$parcelinfo["1"][]添加数据时,会将第二条引用存到和SequenceNumber、Weight平级的数字索引下,结构完全不符合SOAP字段规范
第一步:调整初始数组的CustomerReferences结构
将单条记录改为二维索引数组存储,方便后续追加多条记录:
$parcelinfo = array(); $parcelinfo["1"] = array( 'SequenceNumber' => 1 + 1, 'GroupPackageCount' => 1, 'Weight' => array( 'Value' => 10, 'Units' => 20 ), // 改成二维索引数组,每个元素对应一个CustomerReferences标签 'CustomerReferences' => array( array( 'CustomerReferenceType' => 'CUSTOMER_REFERENCE', 'Value' => 12345 ) ) );
第二步:追加P_O_NUMBER类型的引用记录
直接向CustomerReferences数组追加元素即可:
$parcelinfo["1"]['CustomerReferences'][] = array( 'CustomerReferenceType' => 'P_O_NUMBER', 'Value' => "TESTSKU" );
调整后CustomerReferences是包含多个子元素的索引数组,PHP的SOAP客户端序列化时会自动将每个子元素生成独立的<CustomerReferences>标签,完全匹配SOAP请求的格式要求。
内容的提问来源于stack exchange,提问作者Uxe
相关产品推荐
相关产品推荐

