2016-10-06 2 views
0

2 개의 배열이 있습니다. 첫 번째 배열은 사용자 ID가 들어있는 1D 배열입니다. 이 Array ([0] => 1042800 [2] => 1184921 [4] => 724911 [66] => 1271106)PHP - 연관 배열에서 각 ID의 값의 합을 찾습니다.

같은

뭔가 내가 각 사용자 ID에 대한 정보를 포함하는 연관 배열, 제 2 배열이있다. 이것은 다음과 같습니다.

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 

같은 것을 싶어. 연관 배열 (associative array)을 반복 처리하고 동시에 각 사용자 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);