2012-11-20 65 views
1

我有一個像如何彙總多維數組的列在PHP

Array 
(
    [A1] => Array 
     (
      [1] => 1 
      [2] => 0 
      [3] => 0 
      [4] => 0 
      [5] => 0 
      [6] => 0 
      [7] => 0 
      [8] => 0 
      [9] => 0 
      [10] => 0 
     ) 
     [A2] => Array 
     (
      [1] => 1 
      [2] => 1 
      [3] => 0 
      [4] => 0 
      [5] => 0 
      [6] => 0 
      [7] => 0 
      [8] => 0 
      [9] => 0 
      [10] => 0 
     ) 
     [A3] => Array 
     (
      [1] => 0 
      [2] => 0 
      [3] => 0 
      [4] => 0 
      [5] => 0 
      [6] => 0 
      [7] => 0 
      [8] => 0 
      [9] => 0 
      [10] => 0 
     ) 
) 

我想補充逐列的數組。

我想這樣回答:

[sum] => Array 
    (
     [1] => 2 
     [2] => 1 
     [3] => 0 
     [4] => 0 
     [5] => 0 
     [6] => 0 
     [7] => 0 
     [8] => 0 
     [9] => 0 
     [10] => 0 
    ) 

有任何數組函數在PHP這樣做嗎?否則我該如何做到這一點?

+0

[你有什麼嘗試?](http://www.whathaveyoutried.com/) –

+0

PHP中沒有任何功能會自動執行此操作,但是兩個循環都應該這樣做。自己去吧。 – Maccath

回答

2

總是有自定義代碼:

function array_sum_rows($arr) { 
    $out = array(); 
    foreach ($arr as $row) { 
     foreach ($row as $i => $val) { 
      $out[$i] = isset($out[$i]) ? $out[$i] + $val : $val; 
     } 
    } 
    return $out; 
} 
+0

感謝您的回覆。我在行$ out [$ i] = $ out [$ i]獲得了未定義的偏移量錯誤? $ out [$ i] + $ val:$ val; – jaya

+0

優秀的答案。非常感謝你。 – jaya

+0

樂意幫忙。 :) –

0
$multiArray = ... //your array 
$sumArray = array(); 
$i = 1; 

foreach ($multiArray as $key => $array) { 
    $sumArray[$i] = array_sum($array); 
    $i++; 
} 

這將適用於您的數組。你會得到一個數組

http://php.net/manual/en/function.array-sum.php

+0

這將它們的父數組相加,OP要求鍵值的總和。 – Maccath

0

不幸的是失去對置的實際指數:

function array_transpose($arr) { 
    return call_user_func_array(
     'array_map', 
     array_merge(
      array(NULL), 
      $arr 
     ) 
    ); 
} 

$transposedArray = array_transpose($myData); 
$result = array_map('array_sum', $transposedArray); 
var_dump($result); 

但是,索引可以通過

恢復
$result = array_combine(array_keys(end($myData)), $result);