source

php에서 어레이의 평균을 찾는 방법은 무엇입니까?

factcode 2022. 9. 27. 23:48
반응형

php에서 어레이의 평균을 찾는 방법은 무엇입니까?

예제:

$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;

데모

보다 간결하고 권장되는 방법

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

여기를 참조해 주세요.

허용되는 답변은 예제 값에서 작동하지만 일반적으로 단순히 다음을 사용합니다.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));

항목 제어는 숫자 확인으로 수행해야 합니다.아니면 이런 거$array = [1.2, 0.33, [123]]계산이 깨집니다.

// 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));

마지막으로:

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);
}

크레딧: froq.util.어레이

언급URL : https://stackoverflow.com/questions/33461430/how-to-find-average-from-array-in-php

반응형