проблема с разделителем точка при чтении xm

yngwie19

Новичок
проблема с разделителем точка при чтении xm

здравствуйте. вот все тот же пример считываемого xml файла
PHP:
<?xml version="1.0" encoding="utf-8" ?>    
<Books>     
 <Author i="1.1523" title="Аврора" />
      <Author i="0.75" title="Адмирал" />
</Books>
допустим что мне нужно считать значение параметра i и умножить его на 2. Делаю так:
PHP:
foreach($xml->Books->Author as $author)
  {
          echo ($author['i'] * 2).'<br>'; 
   }
получается:
PHP:
2 
0
т.е видно что не правильно интерпретирует разделитель точку. В другой ветке советовали использовать функцию floatval() - с ней работает, но хотелось бы ее каждый раз не использовать, т.к реально обрабатываемый файл более сложной структуры и поэтому не хотелось бы ее каждый раз использовать чтобы считывать подобные значения. Мне еще предложили поменять локаль - с помощью setlocale(LC_NUMERIC, 'en_EN') - к сожалению безрезультатно. Подскажите есть ли другие пути решения этой проблемы?
 

yngwie19

Новичок
dimagolov
понимаете, это я здесь в качестве примера написал что умножаю на 2, а в другом варианте что-то типа вот этого:
PHP:
<?xml version="1.0" encoding="utf-8" ?>    
<Books>     
 <Author i="1.1523" a="12.2" />
      <Author i="0.75" a="12.9" />
</Books>
PHP:
foreach($xml->Books->Author as $author)
  {
          echo ($author['i'] * $autor['a']).'<br>'; 
   }
тогда как? у меня реально точки игнорятся.
 

dimagolov

Новичок
yngwie19, ты по ссылке ходил? до тебя еще не дошло, что происходит преобразование типов и тебе нужно, чтобы оно всегда происходило в float?
 

yngwie19

Новичок
Т.е мне все же нужно использовать функцию floatval()?
PHP:
foreach($xml->Books->Author as $author)
  {
          echo (floatval($author['i']) * floatval($autor['a'])).'<br>'; 
   }
 

dimagolov

Новичок
http://www.php.net/manual/en/language.types.string.php#language.types.string.conversion

перечитал ман сам. понял, что проблемы у тебя быть не должно вообще:
PHP:
<?php
$author= array ();
$author['i']="1.1523";
$author['a']="12.2";
echo ($author['i'] * $author['a']).'<br>'; // 14.05806
$author['i']="0.75";
$author['a']="12.9";
echo ($author['i'] * $author['a']).'<br>'; // 9.675
Разве что точку у тебя не ASCII точка, а что-то более хитрое
 
Сверху