配列内の最頻値を取りたい
array(‘aaa’,’bbb’,’bbb’,’ccc’);
みたいな配列から一番数が多い値(この例ならbbb)を取り出したい
ついでに$countに最大数を入れたいと思って書いたよ。
function return_max_count_item($list,&$count = null){
if(empty($list)){
$count = 0;
return null;
}
//値を集計して降順に並べる
$list = array_count_values($list);
arsort($list);
//最初のキーを取り出す
reset($list);
$before_key = key($list);
$before_val = array_shift($list);
$no1_list = array($before_key);
//2番目以降の値との比較
foreach ($list as $key => $val){
if($before_val > $val){
break;
}else{
// 個数が同値の場合は配列に追加する
array_push($no1_list,$key);
$before_key = $key;
$before_val = $val;
}
}
$count = $before_val;
if(count($no1_list) > 1){
//同値の場合の処理があればここに書く、今回はarray_shiftで最初に追加したkeyを返した
return array_shift($no1_list);
}else{
return $before_key;
}
}
