((Rating * Times) + New) / (Times + 1)
Для ваших значений:
((3 * 1) + 3) / (1 + 1)
= ( 3 + 3) / 2
= 6 / 2
= 3
Таким образом, процедура выглядит математически правильной.
Я предлагаю вам перевести вычисление в собственную функцию с параметрами, поэтомуВас так не раздражает остальная часть кода, который у вас есть в этом пакете.Это упростит отладку для вас:
function new_rate($rating, $times, $new)
{
return (($rating * $times) + $new) / ($times + 1);
}
Затем вы сможете использовать это более легко в своем коде.Кроме того, если что-то еще является причиной ошибки, вы можете просто выяснить это, протестировав пустую функцию.Если он работает правильно, вы знаете, что ошибка находится в другом месте.
Надеюсь, это поможет.