2014-10-16 2 views
0

PHP 배열을 요약하는 데 문제가 있습니다. 나는 프로가 아니며 다른 모든 게시물은 도움이되지 않습니다. I 이런 배열 가지고php 배열의 그룹화 된 요약

Array 
(
    [0] => Array 
     (
      [position_article_nr] => 100110 
      [position_qty] => 50 
     ) 

    [1] => Array 
     (
      [position_article_nr] => 100341 
      [position_qty] => 1 
     ) 

    [2] => Array 
     (
      [position_article_nr] => 100341 
      [position_qty] => 1 
     ) 

    [3] => Array 
     (
      [position_article_nr] => 100367 
      [position_qty] => 1 
     ) 

    [4] => Array 
     (
      [position_article_nr] => 100367 
      [position_qty] => 1 
     ) 

) 

를 내 결과는 다음과 같아야

Array 
(
    [0] => Array 
     (
      [position_article_nr] => 100110 
      [position_qty] => 50 
     ) 

    [1] => Array 
     (
      [position_article_nr] => 100341 
      [position_qty] => 2 
     ) 

    [2] => Array 
     (
      [position_article_nr] => 100367 
      [position_qty] => 2 
     ) 
) 

position_qty 동일 position_article_nr의 합이다. 아이디어가 있습니까? 감사합니다

+1

식당을 $out에서 키를 제거하려면 (http://php.net/manual/en/control-structures.foreach. php) 더 많은 도움이 필요하시면 알려주십시오 :) – Sam

+0

아니면 데이터베이스 결과일까요, 아마도'sum'과'group by'입니까? – AbraCadaver

답변

0

$arr 귀하의 배열, $out 최종 데이터입니다. 카운팅하는 동안 연관 배열의 키로 position_article_nr의 값을 처리하는 것이 더 쉽고 더 쉽습니다 (기존 레코드를 검색 할 필요가 없음).

$out = array(); 
foreach($arr as $el) 
    if (!isset($out[$el['position_article_nr']])) 
    $out[$el['position_article_nr']] = $el; 
    else 
    $out[$el['position_article_nr']]['position_qty'] += $el['position_qty']; 

var_dump($out); 

당신은 단지 [`foreach` 루프] 주변에 $out = array_values($out);

+0

고마워요! 완벽하게 작동합니다! 나는 그것을 이해하는 데 약간의 어려움이 있지만 그것을 공부하고 계속 배우겠습니다! – Marco

+0

@Marco는 무엇인가 불분명한지 질문합니다. 연관 배열의 키로서'100367'을 사용합니다. 이렇게하면 이전에 저장 한 값을 확인하거나 해결하는 것이 더 쉽습니다. – Cheery

+0

나는 키와 코드에 대한 논리를 이해한다 : 키 'xxxxxx'가있는 기존 배열의 증명. 설정되지 않았을 경우 position_qty에 qty를 추가한다. 그러나 $ out [$ position [_ position_article_nr ']] = $ el의 스타일은 나에게 약간 혼란 스럽다 :// 곧 그것을 희망적으로 이해할 것이다 – Marco