Как найти среднее значение из массива в php?
Пример:
$a[] = '56';
$a[] = '66';
$a[] = '';
$a[] = '58';
$a[] = '85';
$a[] = '';
$a[] = '';
$a[] = '76';
$a[] = '';
$a[] = '57';
Собственно, как найти среднее значение из этого массива, исключая пустые. помогите решить эту проблему.
Ответы
Ответ 1
сначала нужно удалить пустые значения, иначе среднее будет не точным.
так
$a = array_filter($a);
$average = array_sum($a)/count($a);
echo $average;
DEMO
Более краткий и рекомендуемый способ
$a = array_filter($a);
if(count($a)) {
echo $average = array_sum($a)/count($a);
}
смотрите здесь
Ответ 2
Принятый ответ работает для значений примера, но в целом просто используя array_filter($a)
, вероятно, не очень хорошая идея, потому что он будет отфильтровывать любые фактические нулевые значения, а также строки с нулевой длиной.
Даже '0'
оценивает значение false, поэтому вы должны использовать фильтр, который явно исключает строки нулевой длины.
$a = array_filter($a, function($x) { return $x !== ''; });
$average = array_sum($a) / count($a);
Ответ 3
echo array_sum($a) / count(array_filter($a));