2016-10-06 12 views
0

私は2つの配列を持っています。最初の配列は、ユーザーIDを含む1D配列です。このArray ([0] => 1042800 [2] => 1184921 [4] => 724911 [66] => 1271106)PHP-連想配列の各IDの値の合計を求める

よう

何かが、私は、各ユーザーIDの情報が含まれている連想配列であり、二番目の配列を持っています。このようなものです

Harvest_DayEntry::__set_state(array('user-id'=>1042800 'hours'=>2 ,Harvest_DayEntry::__set_state(array('user-id'=>1042800 'hours'=>4)) 

これは実際には配列の一部です。今、私は各ユーザーIDの合計時間を計算したいと考えています。

これは私が試みたものです。

//Add all the Hours for a Given User ID 
//$output is the Array of User ID's 
$resultGetEntries=$api->getProjectEntries($project_id,$range); 
$dayEntries= $resultGetEntries->data; 

$i=0; 
$sum=$sum[20]; 
$sum= array_fill(0, 20, 0); 

foreach ($dayEntries as $key => $value) { 
    if($output[i] == $value->get("user-id")) { 
     $sum[$i] = $sum[$i] + $value->get("hours"); 
    } 

    $i++; 
} 

結局私は、私はそれについて移動する方法があまりにもわからないこの

User ID Hours 
    1042800  15  
    1184921  18 
    724911  10 
    1271106  8 

のようなものを取得したいです。私はどのように連想配列をループし、同時に各ユーザーIDの合計を計算するのか分からないようです。私はちょうどこの問題を解決するための適切な論理を知る必要があります。

答えて

1

私は$resultGetEntriesがユーザID配列であり、$dayEntriesHarvest_DayEntryの配列であると仮定します。

重ループの両方の上に両方iterartingさを結合する最も簡単な方法:

$resultGetEntries = $api->getProjectEntries($project_id,$range); 
$dayEntries = $resultGetEntries->data; 

$sums = array(); 
foreach ($resultGetEntries as $i => $userId) { 
    $sums[$userId] = 0; 
    foreach ($dayEntries as $j => $dayEntry) { 
     if ($dayEntry->get("user-id") == $userId) { 
      $sums[$userId] += $dayEntry->get("hours"); 
     } 
    } 
} 
print_r($sums); 
関連する問題