将xml数据转换为数组

时间:2015-02-24 20:46:47

标签: php xml

我正在尝试解析XML文件中的所有货币值。我想从XML文件中获取此数组。:

Array
(
    [USD] => 1.0501
    [RUB] => 0.0165
    [TRY] => 0.4244
)

但我得到了这个:

Array
(
    [USD] => SimpleXMLElement Object
        (
            [0] => 1.0501
        )

    [RUB] => SimpleXMLElement Object
        (
            [0] => 0.0165
        )

    [TRY] => SimpleXMLElement Object
        (
            [0] => 0.4244
        )

)

这是我的PHP代码:

<?php
@header('Content-Type: text/html; charset=utf-8;');
$date = date ("d.m.Y");
$cur_arr = array("TRY", "RUB", "USD");
$url = simplexml_load_file("http://cbar.az/currencies/" .$date.".xml");

foreach($url->ValType[1]->Valute as $key=>$value){
    $attr = $value->attributes();

    if(in_array($attr["Code"],$cur_arr)){
        $data[''.$attr["Code"].''] = $value->Value[0];
    }

}
print_r($data);
?>

我想得到一个像第一个例子的数组。我尝试了很多代码但是我的结果上有SimpleXMLElement对象。我怎么能像第一个例子那样得到它?

1 个答案:

答案 0 :(得分:0)

在值之前添加(array)

  foreach($url->ValType[1]->Valute as $key=>$value){
    $attr = $value->attributes();

    if(in_array($attr["Code"],$cur_arr)){
        $value = (array)$value->Value;
        $data[''.$attr["Code"].''] = $value[0];
    }

}

这将返回

array(3) {
  ["USD"]=>
  string(6) "1.0501"
  ["RUB"]=>
  string(6) "0.0165"
  ["TRY"]=>
  string(6) "0.4244"
}