2017-12-20 30 views
-1

この関数を使用して、配列内のキーの中央値を返すにはどうすればよいですか?このような配列で配列のキーの中央値を取得

function array_median($array) { 
    $iCount = count($array); 
    $middle_index = floor($iCount/2); 
    sort($array, SORT_NUMERIC); 
    $median = $array[$middle_index]; 
    if ($iCount % 2 == 0) { 
    $median = ($median + $array[$middle_index - 1])/2; 
    } 
    return $median; 
} 

$arr = array('5'=>100,'1'=>30,'2'=>80);

中央値は、キー2でなければなりません。

+0

_ "中央値はキー2" _ ...とする必要があります。ほぼ2kの評判、私たちはリンクする必要があります[this](https://stackoverflow.com/help/how-to-ask)。 – FirstOne

+0

@FirstOne予想される結果を説明しようとしていました。 – Borsn

+0

私はxDを持っています。しかし、何を得ていますか?期待されていなければ、何が返されているのですか? – FirstOne

答えて

1

中央値のキーを取得するには、値の代わりにキーの中央値を計算する必要があります。

function array_median($array) { 
    // get keys of passed array 
    $array = array_keys($array); 
    $iCount = count($array); 
    $middle_index = floor($iCount/2); 
    sort($array, SORT_NUMERIC); 
    $median = $array[$middle_index]; 
    if ($iCount % 2 == 0) { 
    $median = ($median + $array[$middle_index - 1])/2; 
    } 
    return $median; 
} 

$arr = array('5'=>100,'1'=>30,'2'=>80); 
echo array_median($arr); // output 2 
+0

それは絶対にゼロ差を作る。 'count(array_keys($ array))' === 'count($ array)' _Think about it_ – RiggsFolly

+0

はい、しかしそれは配列の値についてのカウントではありません。 –

+0

@RiggsFolly 'count(array_keys($ array))'は中央値を返しません。 – Borsn

関連する問題