2012-06-28 4 views
1

주 배열에 두 값의 배열을 추가하는 루프가 있습니다.2D 배열에서 두 번째를 더하는 고유 값 축소

메인 배열의 첫 번째 값이 같은 모든 배열을 병합하는 동시에 어떻게 동시에 두 번째 값을 더할 수 있습니까?

많은 경우 $ entityId는 같고 $ remaining은 다릅니다.

이제 array_unique와 비슷한 함수가 필요합니다.이 함수는 고유 한 $ entityId를 남겨 둡니다. 그러나 나머지 $ 값은 모두 합쳐 지므로 예를 들어 남았습니다. 2339, 83572.60.

희망이 명확하게 설명했습니다!


내가 원하는 출력 :

어레이 ([0] => 배열 ([0] => 2499 [1] => 5314.50) [1] => 배열 ([0] => 639 [1] =>을 82,500))

즉 어레이 ([0] => UNIQUEID [1] => SUM)이 가장 좋은 방법

+0

당신은 이것을 시도 할 수 있습니다 :'$ mainData [$ entityId] [] = $ remaining;' – k102

+0

아마도 $ mainData 샘플을 보여줘야합니다. –

답변

0

먼저 연관 배열을 구축 아마 (해시) $ entityId를 키로 사용하여 (각 항목에 대해 고유 한 항목을 제공함) $ 값의 나머지 누적 합계 :

읽는 것입니다 동등하지만, 다소 어렵게 아래

$mainData = array(); 
foreach ($perEntityTotals as $entityId => $total) 
{ 
    $mainData[] = array($entityId, $total); 
} 

:

// Initialise the hash before looping 
$perEntityTotals = array(); 

/* Loop ... */ 

// Add the $remaining value to the appropriate entity's total 
// If the key doesn't yet exist, it will be created with the value $remaining 
$perEntityTotals[$entityId] += $remaining; 

/* End Loop */ 

은 원래 요청이 같은 포맷을 다시하려면 다음 해시를 조작해야합니다

$mainData = array_map(
    NULL,    // see Example #4 on http://php.net/array_merge 
    array_keys($perEntityTotals), 
    array_values($perEntityTotals) 
); 
관련 문제