dllweb
@dllweb

Как перевести значение поля в XML при распарсивании в число Float?

В общем задачка такая, есть в базе данных SQL поле с типом - DECIMAL , то есть, число с плавающей точкой, по типу float. Проблема состоит в том что, в файле XML есть поле имеющее цену на товар, оно имеет вид например

<ЦенаЗаЕдиницу>1 137ЦенаЗаЕдиницу>

Если кто-то не заметил, между первым числом и последующими идёт проклятый пробел.
Естественно если попытаться закинуть в базу данных это значение, то получится "1", а не 1 137.00

Распарсивание XML идёт по средствам стандартной встроенной функции

$xml = simplexml_load_file($importFile);

в цикле foreach перебираются объекты "Товар" В родительском объекте Товары

Извлечение значения происходит вот так, пытаюсь выйти из ситуации вот так:

foreach ($xml->Каталог->Товары->Товар as $product) { 

(string)$badprice = $product->ЦенаЗаЕдиницу;
$priceExec = str_replace(" ", "", $badprice);

}


Но, всё равно в базу кладётся значение 1 а не 1137
  • Вопрос задан
  • 2473 просмотра
Пригласить эксперта
Ответы на вопрос 1
somenumboola
@somenumboola
Team Lead in B-online Solutions
Ну начать можно с того что не:
(string)$badprice = $product->ЦенаЗаЕдиницу;
А:
$badprice = (string) $product->ЦенаЗаЕдиницу;
Это первое что стоит попробовать.
У вас достаточно странный заголовок вопроса. Потому, что вы похоже пытаетесь получить таки целое число. Иначе было бы 1.137 и:
$priceExec = (float) str_replace(" ", ".", $badprice);

P.s. Лучше при передаче числа в Query таки насильно приводить его к необходимому типу:
$priceExec = (float) str_replace(" ", ".", $badprice);

Получишь 1137.00. И ты и мускул будете чувствовать себя спокойнее. =))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы