На странице, где я сравниваю анкеты, я вычисляю среднее для обоих. Однако определенная строка кода всегда заканчивается делением на ноль независимо от того, какие числа я ввожу. Код:
<?php foreach($questions as $question) : ?>
<?= Html::tag('h4', $question->question) ?>
<?php
//FIRST SET OF QUESTIONNAIRES
$answers1 = $questionnaires1->andWhere(['id_question' => $question->id]);
$all1 = [];
foreach($answers1->orderBy(['answer' => SORT_ASC])->all() as $answer1){
$all1[] = $answer1->answer;
}
$array1 = [
Yii::t('app', 'Number of answers') => $answers1->count(),
Yii::t('app', 'Average answer') => round(array_sum($all1)/count($all1), 2),
Yii::t('app', 'Median') => calculate_median($all1),
Yii::t('app', 'Standard deviation') => round(sd($all1), 2)
];
Сначала я сохраняю каждый отдельный ответ в массиве и сортирую его по возрастанию. Затем я вычисляю среднее значение, добавляя каждое значение в массив, делив его на количество записей в массиве. Я также округляю результат до 2 десятичных знаков.
По какой-то причине round(array_sum($all1)/count($all1), 2)
всегда приводит к отклонению на ноль. Я проверил оба значения перед выполнением расчета, т.е. 4/3. Это должно, очевидно, привести к 1.3333333.
Наконец, когда я пытаюсь echo var_dump(round(array_sum($all1)/count($all1), 2))
он возвращает float (1.33), как и ожидалось … Может быть, я пропускаю что-то очень простое здесь, но я не вижу этого.
Задача ещё не решена.
Других решений пока нет …