2011-10-12 9 views
0

두 개의 PHP 배열이 있습니다. 하나는 그룹 이름을 포함하고 다른 하나는 임금 임금 값을 포함합니다.하나의 PHP 배열에 값이있는 경우 두 번째 배열에 값을 추가하십시오.

$group_wages_array = Array ([0] => 1 [1] => 4 [2] => 1 [3] => 3); 

즉, 일정에 4 명의 직원이 있다는 의미입니다. 두 가지는 기 (4)에 제 1 군, 다른 할당 된 다음과 같이 제 2 어레이는 그룹 3

마지막된다

$tot_wages_array = Array ([0] => 500 [1] => 44 [2] => 80 [3] => 11.25); 

이 각각 직원의 임금의 샘플 배열이다. 두 배열은 데이터베이스에서 정보를 가져 오는 동안 값이 mysql while 루프에 추가 될 때 순서대로 생성됩니다.


은 나중에 선 아래로, 나는 키가 그룹 번호는 하나 개의 배열을 얻을 수있는 두 개의 배열을 결합 값은 해당 그룹의 총 임금이다 :

$combined_group_wages = array_combine($group_wages_array, $tot_wages_array); 

이 같이 작동 하나 이상의 직원이 같은 그룹에 배정 된 경우를 제외하고는 매력. 루프는 각 직원의 정보를 통해 루프로하면서 이러한 배열은 MySQL의에 내장되어 있습니다 : 그냥 배열에 데이터를 밀어하는 대신

array_push($tot_wages_array, $totemp_wages_sch); // Add their wage to the array 
array_push($group_wages_array, $emp_data['group_id']); // Add their group to the array 

, 나는 '나는 영어를 알고 있지만 나는 돈 ...이 작업을 수행 할 필요가

$ group_wages_array에 $ emp_data [ 'group_id'] 값이 존재하면이 배열에 아무 것도 추가하지 않고 키를 가져옵니다. $ tot_wages_sch를 $ tot_wages_array에 추가하십시오. 여기서 key = group_wages_array 키 나는 SQL 쿼리와 비슷하게 들리지만 키와 값을 나중에 페이지에서 조합 할 수 있도록 유지해야합니다. 나는이 잘 작동하도록 할 수있는 경우, 예에 표시된 배열은 다음과 같습니다

$group_wages_array = Array ([0] => 1 [1] => 4 [2] => 3); 
$tot_wages_array = Array ([0] => 580 [1] => 44 [2] => 11.25); 

$combined_group_wages = array_combine($group_wages_array, $tot_wages_array); 

$combined_group_wages = Array ([1] => 580 [4] => 44 [3] => 11.25); 

... 내가 PHP를 사용하여이 작업을 할 수있어. 어떤 아이디어?


다음 두 가지 답변을 조합하여 해결책을 찾았습니다. 영어는 PHP로 변환입니다 여기에 내가 많은 도움이 될 코드의 전체를 볼 수있는 경우

 if(in_array($emp_data['group_id'], $group_wages_array)){ 
     $key = key($group_wages_array); 
     $tot_wages_array[$key] += $totemp_wages_sch; 

     } else { 

     array_push($group_wages_array, $emp_data['group_id']);  
     array_push($tot_wages_array, $totemp_wages_sch); 
     } 
+0

마지막 예제 코드 블록에서 원하는'$ combined_group_wages' 배열을 보여줍니다. – webbiedave

+0

새로운 결합 된 배열을 표시하도록 업데이트되었습니다. – Oseer

+0

이 배열 추상화가 아닌 객체를 다루는 것이 좋습니다. 당신의 코드를 살펴보고 도움을 얻으 려하지만 솔직히 말해서 나는 당신에게 어떤 제안을 할 것입니다. –

답변

2

을이 그것을 수행해야합니다

$group_wages_array = array(1, 4, 1, 3); 
$tot_wages_array = array(500, 44, 80, 11.25); 

$combined_group_wages = array(); 

for ($i=0; $i<count($group_wages_array); $i++) { 
    $group = $group_wages_array[$i]; 
    if (array_key_exists($group_wages_array[$group], $combined_group_wages)) { 
     $combined_group_wages[$group] += $tot_wages_array[$i]; 
    } else { 
     $combined_group_wages[$group] = $tot_wages_array[$i]; 
    } 

} 

print_r($combined_group_wages); 

수익률 :

Array 
(
    [1] => 580 
    [4] => 44 
    [3] => 11.25 
) 

그러나 나는 것이 좋습니다 개체를 사용하여 데이터를보다 잘 표현할 수 있습니다.

+0

멋져 보이지만 인쇄 할 때 ($ combined_group_wages)'내가 얻는 것은 모두 array()입니다. – Oseer

+0

@ user971230 테스트를 실행 한 정확한 코드입니다. 복사하거나 구현할 때 잘못된 결과가 발생했을 것입니다. –

+0

위의 코드와 theprestig3의 조합을 기반으로하는 해결책을 찾았습니다. 나는 지금 그것을 게시하고있다. 도와 줘서 고마워! – Oseer

1

:하지만, 누군가를 도울 수 있다면 여기있다. 나에게 더 많은 코드를 표시하고이 시도 될 때까지 나는 그것을 완벽하게 할 수 있습니다 ->

if(in_array($emp_data['group_id'], $group_wages_array)){ 
    $key = key($group_wages_array); 
    $tot_wages_array[$key] = $totemp_wages_sch; 
} else { 
    array_push($group_wages_array, $emp_data['group_id']); 
} 
+1

예 더 많은 정보가 도움이된다고 동의합니다. 또한 그것의 적어도 절반은 SQL과 단일 (multidimens 어쩌면) 배열은 while 루프 안에 즉시 구축 될 수 있습니다! 테이블 설명을 게시하면 도움이됩니다. – Melsi

관련 문제