PHP-查找关联数组

时间:2016-10-06 19:58:51

标签: php associative-array

我有2个阵列。 First Array是一维数组,包含用户ID。

像这样的数组( [0] => 1042800 [2] => 1184921 [4] => 724911 [66] => 1271106 )

我有第二个数组,它是一个关联数组,包含每个用户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 个答案:

答案 0 :(得分:1)

我认为$resultGetEntries是您的用户ID数组,$dayEntriesHarvest_DayEntry数组。

将两者结合起来的最简单方法是在双循环中迭代两者:

$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);