반응형
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
반응형
'source' 카테고리의 다른 글
.NET Core 2.1 Identity는 모든 사용자에게 관련된 역할을 가져옵니다. (0) | 2022.09.28 |
---|---|
vuex에서 마운트된 함수의 저장소 데이터에 액세스하는 방법 (0) | 2022.09.28 |
함수가 종료되기 전에(예를 들어 검사가 실패하기 전에) python에서 함수를 종료하는 가장 좋은 방법은 무엇입니까? (0) | 2022.09.27 |
리스트 렌더링에서의 Vuex 및 반응성 (0) | 2022.09.27 |
PHP의 GOTO는 나쁜가요? (0) | 2022.09.27 |