我已经搜索了这个特定问题的答案而没有找到答案 - 如果我忽略了某些事情,我很抱歉...这是我的问题......我正在构建两个数据库之间的集成,我是用PHP编码。我从源API获得XML响应,然后需要从该响应中提取特定数据值并将它们添加到数组中,以便通过其API插入到sink数据库中。我可以从源代码获得我需要的数据值,但是当我尝试将它们添加到接收器所需的数组格式时,我得到的数组包含Key / value对而不是值。
这是我用来提取构建数组所需数据的代码的简短片段:
foreach($invoiceResponse->operation->result->data->sodocument as $sodoc){
$invoice = array("Invoice_ID"=>$sodoc->DOCNO, "Invoice_Date"=>$sodoc->WHENPOSTED)
}
结果数组如下所示:
{"Invoice_ID":{"0":"SI-000525"},"Invoice_Date":{"0":"03\/22\/2018"}}
我想要的是这个:
{"Invoice_ID":"SI-000525","Invoice_Date":"03\/22\/2018"}
以下是来自源代码的xml格式:
<response>
<control>
<status>success</status>
</control>
<operation>
<authentication>
<status>success</status>
<sessiontimestamp>2018-04-12T08:14:55-07:00</sessiontimestamp>
</authentication>
<result>
<status>success</status>
<function>readByQuery</function>
<data listtype="sodocument" count="1" totalcount="1" numremaining="0" resultId="">
<sodocument>
<PROJECT>GER-0318-DIG-005</PROJECT>
<CONTACT.COMPANYNAME>FFF Production Service</CONTACT.COMPANYNAME>
<TYPE_OF_INVOICE>Bill in Full</TYPE_OF_INVOICE>
<WHENPOSTED>04/10/2018</WHENPOSTED>
<STATE>Pending</STATE>
</sodocument>
...
我使用以下方法将xml转换为php中的数组:
$response = simplexml_load_string($xml_response);
我可以在一个简单的语句中提取数据,例如,像这样的一行代码:
$query = "DOCHDRID = '".$sodoc->DOCID."'";
结果
DOCHDRNO = 95
所以这里正确地提取数据,但是当我使用相同的语法将这些值添加到数组时,我遇到了如上所述的问题。
我确信这很简单,但我非常感谢任何帮助!谢谢!
答案 0 :(得分:1)
看起来$sodoc->DOCNO
和$sodoc->WHENPOSTED
中有数组,所以在获取数据时抓取第一个索引
foreach($invoiceResponse->operation->result->data->sodocument as $sodoc){
$invoice = array("Invoice_ID"=>$sodoc->DOCNO[0], "Invoice_Date"=>$sodoc->WHENPOSTED[0])
}