2

私は次のような配列を持っています

//$ary, $ary contains some 80 entries, I'm showing only the first 10
Array
(
    [0] => Array
        (
            [December 2012] => 58
        )
    [1] => Array
        (
            [November 2012] => 84
        )
    [2] => Array
        (
            [December 2012] => 83
        )
    [3] => Array
        (
            [November 2012] => 72
        )
    [4] => Array
        (
            [November 2012] => 47
        )
    [5] => Array
        (
            [December 2012] => 93
        )
    [6] => Array
        (
            [November 2012] => 79
        )
    [7] => Array
        (
            [October 2012] => 70
        )
    [8] => Array
        (
            [November 2012] => 75
        )
    [9] => Array
        (
            [October 2012] => 59
        )
    [10] => Array
        (
            [December 2012] => 67
        )
)

以下を使用して、各月の合計を取得できます。

foreach($ary as $array)
{   
    foreach($array as $month=>$cent)
    {

        if(isset($abc[$month])) // prevent index warning
        {           
            $abc[$month] += $cent;
           // tried using $abc[$month] = $abc[$month]/2 but wrong values were returned
        }
        else
        {
            $abc[$month] = $cent;
        }
    }
}

これにより、

Array
(
    [December 2012] => 2195
    [November 2012] => 2159
    [October 2012] => 1631
)

しかし、各月の平均値を見つける方法を見つけることができません。私の場合、 の 31 個のインスタンスDecember 2012、 の 31 個のインスタンス、November 2012および の 25 個のインスタンスがありOctober 2012ます。したがって、これらの3131、および の25値を取得して、月をその数で割ることができるようにする必要があります。

if(isset($abc[$month]))キャプチャするにはループ内で何かを行う必要があると考えていますが、これまでのところ成功していません。平均を取る他の方法はありますか?

PS : 比較のために月の名前 (10 月、11 月、12 月) をハードコードすることはできません。それらは定期的に変化し続けます。

4

2 に答える 2

1
$eachMonth = array();
foreach($ary as $array)
{   
   foreach($array as $month=>$cent)
  {

    $eachMonth[$month][] = $cent;

    if(isset($abc[$month])) // prevent index warning
    {           
        $abc[$month] += $cent
    }
    else
    {
        $abc[$month] = $cent;
    }
  }
}

次に、月ごとに平均を計算できます。

foreach( $eachMonth as $month => $values)
{
   echo $month.' : '.$abc[$month] / count($values);

}
于 2013-03-21T08:55:08.583 に答える
1

これを試して :

$your_array = array(array("December 2012" => 58),
               array("December 2012" => 58)
              );

$res    = array();            
foreach($your_array as $val){
  $res[key($val)][] = $val[key($val)];
}

foreach($res as $k=>&$v){
   $v    = array_sum($v)/count($v);
}

echo "<pre>";
print_r($res);
于 2013-03-21T08:58:37.240 に答える