2010-05-05 76 views
1

我有一個像波紋管陣列。如何在多維數組中添加值?

Array 
(
    [1] => Array 
     (   
      [TotalPosts] => 46 
      [AgentSchemeNumber] => 11 
      [AgentName] => Vaiji 
     ) 

    [2] => Array 
     (   
      [TotalPosts] => 3 
      [AgentSchemeNumber] => 22 
      [AgentName] => Vaiji 
     ) 

    [3] => Array 
     (   
      [TotalPosts] => 0 
      [AgentSchemeNumber] => 33 
      [AgentName] => Vicky 
     ) 

    [4] => Array 
     (   
      [TotalPosts] => 0 
      [AgentSchemeNumber] => 44 
      [AgentName] => Raja 
     ) 

    [5] => Array 
     (   
      [TotalPosts] => 18 
      [AgentSchemeNumber] => 55 
      [AgentName] => Rama 
     ) 

    [6] => Array 
     (   
      [TotalPosts] => 13 
      [AgentSchemeNumber] => 66 
      [AgentName] => Udaya 
     ) 

) 

這裏AgentName包含2個記錄。我想要一個輸出像

Array 
(
    [1] => Array 
     (   
      [TotalPosts] => 49 
      [AgentSchemeNumber] => 11 or 22 (any number) 
      [AgentName] => Vaiji 
     )  

    [2] => Array 
     (   
      [TotalPosts] => 0 
      [AgentSchemeNumber] => 33 
      [AgentName] => Vicky 
     ) 

    [3] => Array 
     (   
      [TotalPosts] => 0 
      [AgentSchemeNumber] => 44 
      [AgentName] => Raja 
     ) 

    [4] => Array 
     (   
      [TotalPosts] => 18 
      [AgentSchemeNumber] => 55 
      [AgentName] => Rama 
     ) 

    [5] => Array 
     (   
      [TotalPosts] => 13 
      [AgentSchemeNumber] => 66 
      [AgentName] => Udaya 
     ) 

) 

請幫我該怎麼做?

回答

1
for ($i=0; $i < sizeof($array); $i++) for ($j=$i+1; $j < sizeof($array); $j++) 
{ 
    if ($array[$i]['AgentName'] == $array[$j]['AgentName']) 
    { 
     $array[$i]['TotalPosts'] += $array[$j]['TotalPosts']; 
     unset($array[$j]); 
    } 
} 

這個運行後你想在$ array中有什麼。

+1

應該是'$陣列[$ i] [ '名稱']'等PHP不使用點符號用於數組或對象的成員訪問。 – nickf 2010-05-05 07:38:46

+0

@nickf:你說得對 – Svisstack 2010-05-05 07:42:07

2

嘗試是這樣的:

$array = array(/* .... */); 
$result = array(); 

foreach ($array as $item) { 
    if (!isset($result[$item['AgentName']])) { 
     $result[$item['AgentName']] = array(
      'TotalPosts'  => 0, 
      'AgnetSchemeNumber' => $item['AgentSchemeNumber'], 
      'AgentName'   => $item['AgentName'] 
     ); 
    } 

    $result[$item['AgentName']]['TotalPosts'] += $item['TotalPosts']; 
} 
$result = array_values($result); 

var_dump($result);