Запись опубликована
Блог Озима. Please leave any
comments there.
Ох уж эти фунты, русскому человеку очень сложно перестроиться на эту меру веса. Сегодня решил написать функцию по суммированию фунтов и унций.
Зачем? Затем, что в одном фунте 16 унций, а когда есть несколько позиций, которые надо сложить можно мозг сломать.
Что она делает? Корректно подсчитывает сумму унций и фунтов, если унций 16 и более - транформирует их в фунты.
function calcweight($pound,$ounce)
{
$p=explode(",",$pound);
$o=explode(",",$ounce);
for ($i=1; $i<=count($p) +1; $i++)
{
$poundfinal=$poundfinal+$p[$i-1];
}
for ($i=1; $i<=count($o) +1; $i++)
{
$ouncefinal=$ouncefinal+$o[$i-1];
}
$on=fmod($ouncefinal,16); // остаток фунтов из унций
$pplus=floor($ouncefinal/16); // что надо будет приплюсовать в фунтам
$ouncefinal=$on; // плюсуем остаток из унций к фунтам
$po = $poundfinal+$pplus;
$ou = $ouncefinal;
return $po.';'.$ou; // выводим получившуюся сумму
}
Чтобы функция нормально работала нужно получить фунты и унции в таком виде
$pound="1,4,23,6,7";
$ounce="12.2,3,3.4,4,2";
Для этого можно воспользоваться циклом наподобие
while ($res=mysql_fetch_array($sql))
{
$pounds.=",".$res['pound'];
$ounces.=",".$res['ounce'];
}
Пример работы функции
echo calcweight("1.3,2.5,2.5,10","13.3,1.5,1,1"); //17.3;0.8
Обновлено: изменен разделитель на выходе, теперь это «;» - для подсчета дробных чисел.