【发布时间】:2018-04-12 04:21:55
【问题描述】:
我已经搜索过这个特定问题的答案,但没有找到 - 如果我忽略了某些问题,我深表歉意……这是我的问题……我正在构建两个数据库之间的集成,我正在用 PHP 编码。我从源 API 获得 XML 响应,然后需要从该响应中提取特定数据值并将它们添加到数组中,以便通过其 API 插入到接收器数据库中。我可以从源获取我需要的数据值,但是当我尝试将它们添加到接收器所需的数组格式中时,我得到一个包含键/值对而不是值的数组。
这是我用来提取构建数组所需数据的代码的简短 sn-p:
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
所以数据在这里被正确提取,但是当我使用相同的语法将这些值添加到数组时,我遇到了上述问题。
我确信这很容易,但我将非常感谢任何帮助!谢谢!
【问题讨论】:
-
Cast 将值转换为适当的类型(没有强制转换,它们是
SimpleXMLElement对象),例如$invoice = array("Invoice_ID"=> (int) $sodoc->DOCNO, "Invoice_Date"=> (string) $sodoc->WHENPOSTED);