Я вообще не знаком с 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 (особенно, но не ограничиваясь, отрасль перевода, исследования и ИТ)