Добрый вечер, суть проблема такова. Надо разобрать xml файл и пересохранить в yml, который подойдет для загрузки в CMS.
Проблема следующая в исходном файле есть теги currency в которых прописаны курсы.
<currency id="EUR" rate="27.5840"/>
<currency id="RUB" rate="0.3760"/>
<currency id="USD" rate="24.8500"/>
Я записываю значения каждой валюты в отдельную переменную таким образом
$eur = $xmlProducts->currency[0]->attributes()->rate;
$rub = $xmlProducts->currency[1]->attributes()->rate;
$usd = $xmlProducts->currency[2]->attributes()->rate;
Потом при обработке массива с оферами делаю такое сравнение
$price = $offer->appendChild($xml->createElement('price'));
if($product->currencyId == 'USD'){
$price = $price->appendChild($xml->createTextNode($product->price * $usd));
Но почему то на выходе у меня цена получается на ~ 1-2% меньше чем должно быть. В чем может быть проблема?
P.S распечатка перменной $usd
SimpleXMLElement Object
(
[0] => 24.8500
)
Распечатка оффера
SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 382
[selling_type] => u
)
[name] => Дельфины коврик для крышки унитаза
[categoryId] => 900064
[price] => 4.43
[currencyId] => USD
[image] => Array
(
[0] => https://b2b.antey.com.ua/media/product_sku_000382_0.jpg
[1] => https://b2b.antey.com.ua/media/product_sku_000382_1.jpg
)
[vendor] => KERAMAC
[vendorCode] => SimpleXMLElement Object
(
)
[param] => Array
(
[0] => Винил
[1] => Другие цвета
[2] => KERAMAC
[3] => Flori
)
[description] => Дельфины коврик для крышки унитаза, винил
[available] => true
)
Но на выходе
<offer id="382">
<name>Дельфины коврик для крышки унитаза</name>
<categoryId>900064</categoryId>
<price>96</price>
<description>Дельфины коврик для крышки унитаза, винил</description>
<vendorCode></vendorCode>
<vendor>KERAMAC</vendor>
<param>
<param name="Материал">Винил</param>
<param name="Цвет/тип покрытия">Другие цвета</param>
<param name="Бренд">KERAMAC</param>
<param name="Серия">Flori</param>
</param>
</offer>
Тоесть по логике как я предпологаю должго быть 4,43*24,8500 что равно 110, а по факту как видите получается 96