2013-12-20 84 views
0

考慮以下的數組: -確定從陣列列平均值

Array 
(
[0] => Array 
    (
     [0] => 99895 
     [1] => 35378 
     [2] => 0.01 

    ) 

[1] => Array 
    (
     [0] => 99895 
     [1] => 813 
     [2] => -0.97 

    ) 

[2] => Array 
    (
     [0] => 99895 
     [1] => 771 
     [2] => 0.29 

    ) 

[3] => Array 
    (
     [0] => 442 
     [1] => 833 
     [2] => -1.06 

    ) 

[4] => Array 
    (
     [0] => 442 
     [1] => 485 
     [2] => -0.61 

    ) 

[5] => Array 
    (
     [0] => 442 
     [1] => 367 
     [2] => -0.14 

    ) 

[6] => Array 
    (
     [0] => 442 
     [1] => 478 
     [2] => 0.77 

    ) 

[7] => Array 
    (
     [0] => 442 
     [1] => 947 
     [2] => -0.07 

    ) 

[8] => Array 
    (
     [0] => 7977 
     [1] => 987 
     [2] => 0.76 

    ) 

[9] => Array 
    (
     [0] => 7977 
     [1] => 819 
     [2] => 0.37 

    ) 

[10] => Array 
    (
     [0] => 7977 
     [1] => 819 
     [2] => 0.36 

    ) 

[11] => Array 
    (
     [0] => 7977 
     [1] => 653 
     [2] => 1.16 

    ) 

[12] => Array 
    (
     [0] => 7977 
     [1] => 1653 
     [2] => 1.15 
    ) 

) 

從上述陣列I將如何確定下文數組?

array 
(
    99895 => -0.223 

    442 => -0.22 

    7977 => 0.76 
) 

實際上我需要在相對於柱的柱3的平均值1.

+0

寫一個循環將每個列3收集到一個數組中,然後計算每個數組的平均值。 – Barmar

+0

@Barmar無法做到。你會幫助我嗎? – ripa

+0

爲什麼你不能做到這一點?這只是簡單的循環和數組索引?我知道,你是一個完全noob,你從來沒有真正學過如何編程,你需要一切勺子餵給你。我已經在爲你寫答案了。 – Barmar

回答

2

首先收集所有的第3組的元素到一個數組鍵控關閉柱1:

$arrays = array(); 
foreach ($input as $vals) { 
    $key = $vals[0]; 
    $val = $vals[2]; 
    if (isset($arrays[$key])) { 
     $arrays[$key][] = $val; 
    } else { 
     $arrays[$key] = array($val); 
    } 
} 

現在通過所有的計算平均值:

foreach ($arrays as &$array) { 
    $array = array_sum($array)/count($array); 
} 
+0

是的。完美運作。謝謝。 – ripa