Я не думаю, что ваш подход действительно работает. Предположим, у вас есть 6 взрослых и 4 детей. В этом случае ваш первый if
будет правдой, и вы получите семейный билет 3 - 2 = 1
. Правильный результат - два семейных билета и два билета для взрослых.
Вы хотите наименьшее количество пар, чтобы определить количество семейных билетов. Попробуйте что-то вроде этого:
$numberOfFamilyTickets = min($numAdultPairs, $numChildPairs);
$remainingAdult = $oForm->adult - 2 * $numberOfFamilyTickets;
$remainingChild = $oForm->child - 2 * $numberOfFamilyTickets;
Предполагается, что $oForm->adult
и $oForm->child
неотрицательны.