从cURL XML响应自定义数组

1 php xml curl

我需要从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);
?>
Run Code Online (Sandbox Code Playgroud)

它打印以下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>
Run Code Online (Sandbox Code Playgroud)

如果我申请,可以使用以下数组 $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
                        (
                        )
                )
        )
)
Run Code Online (Sandbox Code Playgroud)

我需要返回的是和这样的数组.我尝试了几乎所有在其他问题中找到的方法,但从未有过构建这个二维数组的好方法.

array(
    'Option Name' => array(
       'id'=>'40045',
       'quote'=>'20,20',
       'days'=>'1',
    ),
    'Option Name' => array(
       'id'=>'40215',
       'quote'=>'29,27',
       'days'=>'3',
    )
) 
Run Code Online (Sandbox Code Playgroud)

*之后将通过ID代码检索选项名称.

Kal*_*esh 6

这应该完美无缺!

$xml = simplexml_load_string($response);
$json = json_encode($xml);
$arr = json_decode($json,true);

$temp = array();
foreach($arr as $k=>$v) {
  foreach($v as $k1=>$v1) {
    $temp[$k][$k1] = $v1;
  }
}

echo "<pre>";print_r($temp);echo "</pre>";
Run Code Online (Sandbox Code Playgroud)

http://ka.lpe.sh/2012/07/26/php-convert-xml-to-json-to-array-in-an-easy-way/