Строка PHP для Float

Я вообще не знаком с PHP, и у меня был быстрый вопрос.

У меня есть 2 переменные @pricePerUnit и @invoicedUnits. Вот код, который устанавливает эти значения:

$InvoicedUnits = ((string) $InvoiceLineItem->InvoicedUnits); $pricePerUnit = ((string) $InvoiceLineItem->PricePerUnit); 

Если я выдаю это, я получаю правильные значения. Допустим, 5000 счетов и 1,00 по цене.

Теперь мне нужно показать общую сумму. Когда я умножаю эти два вместе, он не работает (как и ожидалось, это строки).

Но я не знаю, как разбирать / преобразовывать / преобразовывать переменные в PHP.

Что мне делать?

     $rootbeer = (float) $InvoicedUnits; 

    Должен сделать это за вас. Проверьте Тип-Жонглирование . Вы также должны прочитать преобразование String в Numbers .

    Вам нужна функция floatval поддерживающая не floatval :

    float floatval (mixed $ var) – Возвращает значение float строки.

    Пример:

     $string = '122.34343The'; $float = floatval($string); echo $float; // 122.34343 

    Ну, если пользователь напишет 1,00,000, тогда floatvar покажет ошибку. Так –

     floatval(preg_replace("/[^-0-9\.]/","",$input)); 

    Это намного надежнее.

    Применение :

     $input = '1,03,24,23,434,500.6798633 this'; echo floatval(preg_replace("/[^-0-9\.]/","",$input)); 

    Работа с разметкой в ​​поплавках – нетривиальная задача. В английской / американской нотации вы отформатируете тысячу плюс 46 * 10-2:

     1,000.46 

    Но в Германии вы изменили бы запятую и указали:

     1.000,46 

    Это сильно затрудняет угадывание правильного числа в многоязычных приложениях.
    Я настоятельно рекомендую использовать Zend_Measure для Zend Framework для этой задачи. Этот компонент будет анализировать строку на float на языке пользователей.

    Используйте эту функцию, чтобы вывести значение float из любого типа текстового стиля:

     function parseFloat($value) { return floatval(preg_replace('#^([-]*[0-9\.,\' ]+?)((\.|,){1}([0-9-]{1,3}))*$#e', "str_replace(array('.', ',', \"'\", ' '), '', '\\1') . '.\\4'", $value)); } 

    Это решение не зависит от настроек языка. Таким образом, для пользовательского ввода пользователи могут вводить значения float любым способом. Это действительно полезно, например, когда у вас есть проект, который работает только на английском языке, но люди во всем мире используют его и, возможно, не имеют в виду, что проект хочет вместо точки запятой использовать значения float. Вы можете добавить javascript в микс и выбрать параметры браузера по умолчанию, но многие люди задают эти значения на английском, но все же вводя 1,25 вместо 1,25 (особенно, но не ограничиваясь, отрасль перевода, исследования и ИТ)