Php二维数组去重,并统计去重后的二维数组中某个值出现次数最多的列

/**
 * 二维数组去重
 * @param $data array
 * @return array
 */
function getRepetitionData($data){
    //  如果传入的 data 不是数组,则需要转换成数组
    //  如果是数组,则注释次方法
    $data_array = $data->toArray();
    //  array_unique()          =>  除数组中的重复的值  @return array
    //  array_map()             =>  通过利用指针来重复调用某个函数,被调用的函数成为回调函数。
    $serialize_after = array_map("unserialize", array_unique(array_map("serialize", $data_array)));
    //  array_column()          =>  返回数组中某个单一列的值
    //  array_count_values()    =>  返回数组中所有值出现的次数
    $count_array = array_count_values(array_column($serialize_after, 'user_id'));
    $temp = [];
    foreach ($count_array as $key => $val){
        $temp[] = $val;
    }
    //  进行简单的排序(从小到大)
    $sort_after = $this->getSort($temp);
    //  array_slice()            =>  取出最后三条数组(因为是从大到小排列,所以取出的数据是最大的三条)
    $the_last_three = array_slice($sort_after,-3,3,true);
    return $the_last_three ;
}

/**
 * 简单排序
 * 从大到小
 * @param $arr
 * @return mixed
 */
function getSort($arr)
{
    $len = count($arr);
    for($i = 1; $i < $len; $i++)
    {
        for($k = 0; $k < $len - $i; $k++)
        {
            if($arr[$k] > $arr[$k+1])
            {
                $tmp = $arr[$k+1];
                $arr[$k+1] = $arr[$k];
                $arr[$k] = $tmp;
            }
        }
    }
    return $arr;
}

返回的数据示例(转成了json格式):


image.png

你可能感兴趣的:(Php二维数组去重,并统计去重后的二维数组中某个值出现次数最多的列)