2012-09-04 2 views
0

나는 내가하고 싶지 아래 같은 배열입니다 합계 PHP

Array (
     [0]=> Array 
       (
        [employee_num] =>1009 
        [employee_name] =>Jane Doe 
        [amount]  =>4500.00 
       ) 
     [1]=> Array 
       (
        [employee_num] =>1009 
        [employee_name] =>Jane Doe 
        [amount]  =>2500.00 
       ) 
     [2]=> Array 
       (
        [employee_num] =>1033 
        [employee_name] =>Test User 
        [amount]  =>3455.50 
       ) 
     [3]=> Array 
       (
        [employee_num] =>1009 
        [employee_name] =>Jane Doe 
        [amount]  =>5500.00 
       ) 
     [4]=> Array 
       (
        [employee_num] =>1033 
        [employee_name] =>Test User 
        [amount]  =>7500.00 
       ) 
    ) 

이하와 같은 배열이 :의 합 각 사용자 당 (한 항목을 자신의 amount 값은입니다.) for-each를 사용해야한다는 것을 알고 있지만 [employee_num] 및 [employee_name]의 항목을 병합하는 방법을 실제로 이해할 수는 없습니다. 배열에 비슷한 항목이나 색인의 수를 미리 알지 못합니다.

Array (
     [0]=> Array 
       (
        [employee_num] =>1009 
        [employee_name] =>Jane Doe 
        [amount]  =>12500.00 
       ) 
     [1]=> Array 
       (
        [employee_num] =>1033 
        [employee_name] =>Test User 
        [amount]  =>10955.50 
       ) 
    ) 

어떻게하면됩니까? 누구든지 도와 줄 수 있습니까? 감사. $outputArray

$outputArray = array(); 
foreach ($array as $employeeArray) { 
    $outputArray[$employeeArray['employee_name']]['employee_num'] = $employeeArray['employee_num']; 
    $outputArray[$employeeArray['employee_name']]['employee_name'] = $employeeArray['employee_name']; 
    $outputArray[$employeeArray['employee_name']]['amount'] += $employeeArray['amount']; 
} 
print_r($outputArray); 

키는 직원의 이름이됩니다 : $ 배열을 가정

답변

1
function sumAmount($data) 
{ 
    $rst=array(); 
    foreach($data as $info) 
    { 
     if(!isset($rst[$info["employee_num"]])) 
      $rst[$info["employee_num"]]=$info; 
     else 
      $rst[$info["employee_num"]]["amount"]+=$info["amount"]; 
    } 
    return array_values($rst); 
} 
+0

매력처럼 작동했습니다. 감사 :) – Thili

0

은 원래의 배열입니다. 당신이 employee_num으로 일치 시키길 원한다면 $outputArray[$employeeArray['employee_name']] 대신 $outputArray[$employeeArray['employee_num']]을 사용하면됩니다.

+0

각 사용자의 금액 합계를 가져오고 싶지만 코드는 각 사용자의 마지막 금액 항목을 가져옵니다. – Thili

+1

@ThiliniIW 죄송합니다. 내 솔루션을 편집했습니다. '$ outputArray [$ employeeArray [ 'employee_name']] [ 'amount'] + = $ employeeArray [ 'amount'];'행을 확인하십시오. 나는'= '대신에'+ ='를 사용했다. – Stegrex