Как найти среднее из массива в php?

Пример:

$a[] = '56';
$a[] = '66';
$a[] = '';
$a[] = '58';
$a[] = '85';
$a[] = '';
$a[] = '';
$a[] = '76';
$a[] = '';
$a[] = '57';

Собственно, как найти среднее значение из этого массива, исключая пустое. Пожалуйста, помогите решить эту проблему.

23

Решение

сначала нужно удалить пустые значения, иначе среднее будет не точным.

так

$a = array_filter($a);
$average = array_sum($a)/count($a);
echo $average;

DEMO

Более краткий и рекомендуемый способ

if(count($a)) {
$a = array_filter($a);
echo $average = array_sum($a)/count($a);
}

Посмотреть здесь

48

Другие решения

Принятый ответ работает для значений примера, но в целом просто с использованием array_filter($a) вероятно, не очень хорошая идея, потому что он отфильтровывает любые фактические нулевые значения, а также строки нулевой длины.

Четное '0' оценивается как ложное, поэтому вы должны использовать фильтр, который явно исключает строки нулевой длины.

$a = array_filter($a, function($x) { return $x !== ''; });
$average = array_sum($a) / count($a);
9

echo array_sum($a) / count(array_filter($a));
2
По вопросам рекламы [email protected]