How to find average from array in php?

PhpArraysAverage

Php Problem Overview


Example:

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

Actually how to find average value from this array excluding empty. please help to resolve this problem.

Php Solutions


Solution 1 - Php

first you need to remove empty values, otherwise average will be not accurate.

so

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

DEMO

More concise and recommended way

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

See here

Solution 2 - Php

The accepted answer works for the example values, but in general simply using array_filter($a) is probably not a good idea, because it will filter out any actual zero values as well as zero length strings.

Even '0' evaluates to false, so you should use a filter that explicitly excludes zero length strings.

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

Solution 3 - Php

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

Solution 4 - Php

As a late look, item controls should be done with numeric check. Otherwise something like this $array = [1.2, 0.33, [123]] will corrupt the calculation:

// Get numerics only.
$array = array_filter($array, fn($v) => is_numeric($v));

// Get numerics only where value > 0.
$array = array_filter($array, fn($v) => is_numeric($v) && ($v > 0));

Finally:

public static function average(array $array, bool $includeEmpties = true): float
{
    $array = array_filter($array, fn($v) => (
        $includeEmpties ? is_numeric($v) : is_numeric($v) && ($v > 0)
    ));

    return array_sum($array) / count($array);
}

Credits: froq.util.Arrays

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDinesh GView Question on Stackoverflow
Solution 1 - PhpMubinView Answer on Stackoverflow
Solution 2 - PhpDon't PanicView Answer on Stackoverflow
Solution 3 - PhpMartyn ShuttView Answer on Stackoverflow
Solution 4 - PhpK-GunView Answer on Stackoverflow