Доброго времени суток!
Есть таблица вот такого вида:
Базовой единицей измерения в ней является килограмм.
Есть формула
$quantity = 12514.1212134545342; // КГ
$units = массив с данными из таблицы.
function fullNameUnit($quantity,$units) {
$res = array();
foreach ($units as $unit) {
if ($quantity==0) { break; }
$res[$unit['code']] = rtrim(floor($quantity / $unit['base_unit_quantity']));
$quantity = $quantity % $unit['base_unit_quantity'];
}
return $res;
}
dd($quantity . ' кг', fullNameUnit($quantity,$data);
Результат выполнения функции
Функция, по break останавливается на кг и не считает то, что находится после запятой в переменной $quantity, т.к. иначе появляется ошибка. Но нужно что бы вес выводился полностью, например вот так:
11 тонн 7 центнеров 34 килограмма 120 грамм 210 сантиграмм 454 миллиграмм 534 микрограмма
Как это исправить? Как можно доработать данную функцию?