2017-04-25 62 views
1

我需要解析此XML:PHP的XML浮动分割

<ValCurs Date="25.04.2017" name="Foreign Currency Market"> 
<Valute ID="R01010"> 
<NumCode>036</NumCode> 
<CharCode>AUD</CharCode> 
<Nominal>1</Nominal> 
<Name>AU Dollar</Name> 
<Value>42,4465</Value> 
</Valute> 
<Valute ID="R01060"> 
<NumCode>051</NumCode> 
<CharCode>AMD</CharCode> 
<Nominal>100</Nominal> 
<Name>AM dram</Name> 
<Value>11,5747</Value> 
</Valute> 

...

有下面的代码:

$file = simplexml_load_file($link);  
foreach ($file as $el) { 
     (float)$rates=(float)($el->Value)/(float)($el->Nominal); 
     echo (float)($el->Value) . '/' .(float)($el->Nominal) . '=' . $rates;   
    } 

此代码返回:

32/1 = 32 71/1 = 71 11/100 = 0.11 29/1 = 29 31/1 = 31 17/1 = 17 19/100 = 0.19 7十分之二= 7.210分之81= 8.1 56/1 = 56 60/1 = 60百分之八十七= 0.87

但我需要: 42,4465/1 = 42,4465 11,5747/100 = 0,115747 如何做到这一点? )

php -v 
PHP 7.0.15-0ubuntu0.16.04.4 (cli) (NTS) 
+1

代替逗号(,)与点 – splash58

回答

1

无需投所需要的元素,以float类型的两倍。
用下面的办法:

$sxe = simplexml_load_file($link); 
foreach ($sxe as $el) { 
    echo "{$el->Value}/{$el->Nominal}" . "=" 
     . bcdiv(str_replace(',', '.', $el->Value), $el->Nominal, 6) . PHP_EOL; 
} 

输出:

42,4465/1=42.446500 
11,5747/100=0.115747 

使用的功能:(。)http://php.net/manual/en/function.bcdiv.php

+0

THX的答案。我需要输出的例子:42,4465/1 = 42,4465 –

+0

@VadimNosyrev,好的,看我的更新 – RomanPerekhrest

+0

Thx,这是工作) –