PHP获取数组中的重复值和平均第二个值

时间:2017-11-19 13:50:50

标签: php arrays duplicates average

我有一个如下所示的数组:

$ratingsInPosts = array
        (
        array("1",3),
        array("2",5),
        array("2",2),
        array("5",2),
        array("90",1),
        array("5",6),
        array("2",2),
        );

我想在第一列中找到重复值,并从第二列中获取其值。

这样("1",3),("2",5),("2",2),("5",2),("90",1),("5",6),("2",2)

最终会像("1",3),("2",3),("5",4),("90",1)

一样结束

3 个答案:

答案 0 :(得分:0)

我希望它可以帮到你:

$groups = array();
// in this loop we group values by first column
foreach ($ratingsInPosts as $row) {
    $key = $row[0];
    if (!isset($groups[$key]) {
        $groups[$key] = array();
    }
    $groups[$key][] = $row[1];
}
$result = array();
foreach ($groups as $key => $value) {
    $avg = array_sum($value) / count($value);
    $row = array($key, $avg);
    $result[] = $row;
}

答案 1 :(得分:0)

<?php
header('Content-Type: text/plain');
$ratingsInPosts = array(array("1",3),array("2",5),array("2",2),array("5",2),array("90",1),array("5",6),array("2",2));


$result = array();    
$output = array();    
foreach($ratingsInPosts as $array){  
  $result[$array[0]][] = $array[1];
}
foreach($result as $key=>$array){
  $output[] = array($key,round(array_sum($array)/count($array)));
}


var_export($output);
?>

答案 2 :(得分:0)

试试此测试解决方案 我得到了所需的输出

$ratingsInPosts = array
        (
        array("1",3),
        array("2",5),
        array("2",2),
        array("5",2),
        array("90",1),
        array("5",6),
        array("2",2),
        );
$arr1 = array_column($ratingsInPosts, 0);
$p = array_count_values($arr1);
foreach($p as $key => $value)
{
  $sum = 0;
  for($i=0; $i < $value; $i++)
  {
    $pos = array_search($key, $arr1);
    $sum += $ratingsInPosts[$pos][1];
    unset($arr1[$pos]);
    unset($ratingsInPosts[$pos]);
  }
  $re[] = array('"'.$key.'"',$sum/$value);
}
print_r($re);