我需要从cURL请求输出具有特定格式的数组。我尝试了很多方法来根据需要格式化XML结果,但没有运气。从cURL XML响应自定义数组
这里是PHP代码
<?php
$request_url = "http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?nCdEmpresa=&sDsSenha=&sCepOrigem=71939360&sCepDestino=72151613&nVlPeso=1&nCdFormato=1&nVlComprimento=16&nVlAltura=5&nVlLargura=15&sCdMaoPropria=s&nVlValorDeclarado=200&sCdAvisoRecebimento=n&nCdServico=41106%2C40045&nVlDiametro=0&StrRetorno=xml 4110616,9034,000,001,50SN04004519,2014,000,002,00SS0";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $request_url);
curl_setopt($curl, CURLOPT_TIMEOUT, 130);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
curl_close($curl);
print_r($response);
?>
它打印出以下XML
<servicos>
<cservico>
<codigo>41106</codigo>
<valor>16,90</valor>
<prazoentrega>3</prazoentrega>
...
<erro>0</erro>
<msgerro>
</msgerro>
</cservico>
<cservico>
<codigo>40045</codigo>
<valor>19,20</valor>
<prazoentrega>1</prazoentrega>
...
<erro>0</erro>
<msgerro>
</msgerro>
</cservico>
</servicos>
或下面的数组,如果我申请$xml = new SimpleXMLElement($response);
SimpleXMLElement Object
(
[cServico] => Array
(
[0] => SimpleXMLElement Object
(
[Codigo] => 41106
[Valor] => 16,90
[PrazoEntrega] => 3
...
[Erro] => 0
[MsgErro] => SimpleXMLElement Object
(
)
)
[1] => SimpleXMLElement Object
(
[Codigo] => 40045
[Valor] => 19,20
[PrazoEntrega] => 1
...
[Erro] => 0
[MsgErro] => SimpleXMLElement Object
(
)
)
)
)
我需要什么回报和阵列喜欢这个。我尝试了几乎所有在其他问题中找到的方法,但从未得到构建这个二维数组的好方法。
array(
'Option Name' => array(
'id'=>'40045',
'quote'=>'20,20',
'days'=>'1',
),
'Option Name' => array(
'id'=>'40215',
'quote'=>'29,27',
'days'=>'3',
)
)
*选项名称将在以后通过ID码检索。
对不起,我的愚蠢,但它最终打印几乎相同的阵列,因为我张贴。也就是说,我仍然不知道如何从那里得到理想的结果! :/ – 2012-08-03 23:09:27
对我来说,好像我需要在数组的第二维上执行一个foreach循环(以[0],[1]作为键的那个),使它们成为新的最终数组的键,然后访问来自第三维的数据使它们成为数组。我只是不知道该怎么做。 :( – 2012-08-03 23:13:58
等待我会帮你通过 – Kalpesh 2012-08-03 23:16:56