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