web-dev-qa-db-ja.com

PHPで配列から平均を見つける方法は?

例:

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

実際には、空を除いてこの配列から平均値を見つける方法。この問題の解決にご協力ください。

28
Dinesh G

最初に空の値を削除する必要があります。削除しないと、平均が正確になりません。

そう

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

[〜#〜] demo [〜#〜]

より簡潔で推奨される方法

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

こちらを参照

60
Mubin

受け入れられた答えは値の例に対して機能しますが、一般に、単にarray_filter($a)を使用することは、実際のゼロ値と長さゼロの文字列を除外するため、おそらく良い考えではありません。

'0'はfalseと評価されるため、長さゼロの文字列を明示的に除外するフィルターを使用する必要があります。

$a = array_filter($a, function($x) { return $x !== ''; });
$average = array_sum($a) / count($a);
15
Don't Panic
echo array_sum($a) / count(array_filter($a));
2
Martyn Shutt