2016-07-26 5 views
0

나는 여기에서 많은 답변을 읽었지만, 이것을 해결할 수는 없었다.키에 의한 다차원 배열의 합계 값

나는 다음과 같습니다 다차원 배열을 가지고

Array 

(
[0] => Array 
    (
     [0] => 
     [1] => 655 
    ) 

[1] => Array 
    (
     [0] => IT-82 
     [1] => 14 
    ) 

[2] => Array 
    (
     [0] => IT-21 
     [1] => 5 
    ) 

[3] => Array 
    (
     [0] => IT-82 
     [1] => 7 
    ) 

[4] => Array 
    (
     [0] => 
     [1] => 3 
    ) 

[5] => Array 
    (
     [0] => IT-21 
     [1] => 4 
    ) 

[6] => Array 
    (
     [0] => 
     [1] => 3 
    ) 

[7] => Array 
    (
     [0] => IT-21 
     [1] => 3 
    ) 

[8] => Array 
    (
     [0] => IT-72 
     [1] => 7 
    ) 

[9] => Array 
    (
     [0] => IT-75 
     [1] => 22 
    ) 

[10] => Array 
    (
     [0] => IT-75 
     [1] => 3 
    ) 
) 

내가 좋아하는 하나의 배열로 끝나는 키에 따라 값을 요약하고 싶습니다 :

으로 시도

Array 
(
     => 661 
IT-82 => 21 
IT-21 => 12 
IT-82 => 12 
IT-72 => 7 
IT-75 => 25 
) 

foreach ($array as $k=>$subArray) { 
    foreach ($subArray as $id=>$value) { 
     $sumArray[$id]+=$value; 
    } 
} 

그러나이 값은 모든 값의 합계 만 반환했습니다.

어떤 도움에 감사드립니다.

+1

. 원하는 결과에서 값 '661'에 대한 키가 없습니다. 그러한 배열은 존재하지 않습니다. 하위 배열에 인덱스 0이없는 경우 키로 사용 하시겠습니까? – BeetleJuice

+0

실제로 붙여 넣은 것처럼 배열이 출력됩니다. 생성 된 mysql 파일은 비어있다. 문자열을 설정하는 변수를 적용하면 @JayeshChitroda가 완벽하게 작동하는 답변을 얻을 수 있습니다. – buxbeatz

답변

0

시도 :

$sumArray = array(); 
foreach ($array as $k=>$subArray) { //loop through array 
    if(isset($sumArray[$subArray[0]])) 
    $sumArray[$subArray[0]] += $subArray[1]; // set 0th index as key and 1st as value and add value to current index 
    else 
    $sumArray[$subArray[0]] = $subArray[1]; 
} 
print_r($sumArray); 

출력 : 배열의 모든 구성원이 키가 있어야합니다

Array 
(
    [] => 661 
    [IT-82] => 21 
    [IT-21] => 12 
    [IT-72] => 7 
    [IT-75] => 25 
) 
+0

빠른 응답을 해주셔서 대단히 감사합니다. – buxbeatz

0

나는 그것이 있어야한다고 가정

foreach ($array as $subArray) { 
    $sumArray[$subArray[0]] += $subArray[1]; 
} 
+0

이것은 정말 우아합니다. 내가하고 있었던 것보다 훨씬 더 청결하다. 이 코드는 큰 배열에 많은'undefined index' 경고를 생성 할 것이므로 배열에 접근하기 전에'if! isset then then' 논리를 추가합니다. – BeetleJuice

+0

이 방법은 더 빠르고 깔끔하게 보이지만 실제로는 잘못된 결과를 제공합니다. 그들은 너무 많이 합쳐져 마치 많은 시간을 합친 것보다 훨씬 낫습니다. – buxbeatz