2011-01-21 50 views
0

比方說,我有以下的陣列和我想要添加了使用子陣列值PHP:如何總結在PHP多維數組不合並值

$summary = array(
    "person1" => array(
     question1 => '3', 
     question2 => '5'), 
    "person2" => array(
     question1 => '2', 
     question2 => '3'), 
    "person3" => array(
     question1 => '1', 
     question2 => '2') 
); 

我怎麼能輸出個別陣列爲每個人計算總和,而不是總計所有子陣列中的所有值?例如:

$summary = array(
    "person1" => array(
     questions => '8'), 
    "person2" => array(
     questions => '5'), 
    "person3" => array(
     questions => '3') 
); 

我似乎能夠給它使用foreach循環添加到16,但我需要的是個人價值觀,所以我可以得到的最高值和最低值。

在此先感謝!

+0

`question2 =>'5'`後面是否缺少```? – codaddict 2011-01-21 16:56:35

+0

是的......我輸入了這個信息,並且猜想我忘了添加結束字母。謝謝你的提示! – TymArtist 2011-01-21 18:01:46

回答

2
$summaryTotals = Array(); 
foreach ($summary as $_summary => $_questions) 
    $summaryTotals[$_summary] = Array('questions'=>array_sum($_questions)); 
var_dump($summaryTotals); 

循環遍歷所有人,得到問題的總和,並將它們放在同一個鍵中。


輸出:

array(3) { 
    ["person1"]=> 
    array(1) { 
    ["questions"]=> 
    int(8) 
    } 
    ["person2"]=> 
    array(1) { 
    ["questions"]=> 
    int(5) 
    } 
    ["person3"]=> 
    array(1) { 
    ["questions"]=> 
    int(3) 
    } 
} 
0

這應該做到這一點。

$summary = array(); 

foreach($data as $name => $questions) 
{ 
    $sum = 0; 
    foreach($questions as $question => $answer) 
    { 
     $sum += $answer; 
    } 
    summary[$name]['questions'] = $sum; 
} 

初始化總和值,總結每組問題,存儲總和值,並重復,直到完成。你可以把array_sum()放到mix中,而不是內部的foreach循環中。我總是忘記PHP的數組函數。這將是:

$summary = array(); 

foreach($data as $name => $questions) 
{ 
    summary[$name]['questions'] = array_sum($questions); 
} 

更短,可能更有效。

0

可以遍歷現有的陣列上,發現標記的總和爲特定人的所有問題,並與新創建的數組替換現有的值(數組):

foreach($summary as $person => $person_arr) { 
     $summary[$person] = array('question' => array_sum($person_arr)); 
} 

See it

2

所以你有一個數組的數組,並希望返回每個子數組的總和數組?

function sumArrays($array){ 
    return array_map("array_sum",$array); 
} 

所有你需要做的,就是調用max返回數組上

0

簡單的功能,如:

function sumtwoDimensionalArrWithKey($twoDimensionalArr,$key_value){ 

    foreach($twoDimensionalArr as $twoDimensionalArrValue){ 
     foreach($twoDimensionalArrValue as $key=> $value){ 
      if ($key == $key_value) { 
       $total += $value; 
      } 
     }  
    } 

    return $total; 
} 

它可以這樣調用:

echo sumtwoDimensionalArrWithKey($twoDimensionalArr,'field_name');