2013-10-23 4 views
0

을 결합 (규칙은 다음과 같습니다 다음 일치하는 처음 두 숫자 나머지 번호를 추가하는 경우) :PHP 내가 행을 결합해야하는 나는 PHP 프로젝트를 진행하고 행

array_b4_combine= [ 
    [2,15,1,1,0], 
    [2,15,3,3,0], 
    [2,15,1,1,0], 
    [2,21,2,2,0], 
    [2,24,7,7,0], 
    [2,24,2,2,0], 
    [3,15,1,1,0], 
    [3,15,7,7,0], 
    [3,24,1,1,0]]; 

나는이 배열을

출력은 다음과 같아야합니다

  $num1 = $array_b4_combine[0][0]; 
    $num2 = $array_b4_combine[0][1]; 
    $sum1 = 0; 
    $sum2 = 0 ; 
      $sum3 = 0 ; 

    $combined ; 


    for ($i = 0 ; $i < count($array_b4_combine) ; $i++) 
    { 

     if ($num1 == $array_b4_combine[$i+1][0] && $num2 == $array_b4_combine[$i+1][1]) 
     { 
      $sum1 = $sum1 + $array_b4_combine[$i][2]; 
      $sum2 = $sum2 + $array_b4_combine[$i][3]; 
          $sum3 = $sum3 + $array_b4_combine[$i][4]; 
     } 
     else 
     { 
      $combined[] = array($num1 , $num2 , $sum1, $sum2, $sum3); 

      $day = $array_b4_combine[$i][0]; 
      $time = $array_b4_combine[$i][1]; 
      $sum1 = $array_b4_combine[$i][2]; 
      $sum2 = $array_b4_combine[$i][3]; 
          $sum3 = $array_b4_combine[$i][4]; 

     } 


    } 
:

combined= [ 
    [2,15,5,5,0], 
    [2,21,2,2,0], 
    [2,24,9,9,0], 
    [3,15,8,8,0], 
    [3,24,1,1,0]]; 

이 내 코드입니다

내 코드의 출력은 이것이다 :

combined= 
    [[2,15,4,4,0], 
    [2,15,1,1,0], 
    [2,21,2,2,0], 
    [2,24,7,7,0], 
    [2,24,2,2,0], 
    [3,15,1,1,0], 
    [3,15,7,7,0]]; 

내가 잘못된 순서로 리셋 절을하는 건가요 .. 누군가가 문제가 여기에 무엇을 알아낼 수 있습니다.

감사

답변

0

정말 코드를 이해할 수 없다,이 하나를 시도해보십시오 :

여기
$combined = []; 
foreach ($array_b4_combine as $i => $arrayRow) { 
    $k = $arrayRow[0].' '.$arrayRow[1]; 
    if (isset($combined[$k])) 
     for ($i=2; $i<5; $i++) 
      $combined[$k][$i] += $arrayRow[$i]; 
    else 
     $combined[$k] = $arrayRow; 
} 
$combined = array_values($combined); 
0

내가 당신의 문제를 해결하는 방법입니다. 코드를 최적화 할 수 있습니다.

<?php 
$array_b4_combine = [ 
    [2,15,1,1,0], 
    [2,15,3,3,0], 
    [2,15,1,1,0], 
    [2,21,2,2,0], 
    [2,24,7,7,0], 
    [2,24,2,2,0], 
    [3,15,1,1,0], 
    [3,15,7,7,0], 
    [3,24,1,1,0]]; 

    $j =0; 

    for ($i = 0 ; $i < count($array_b4_combine) -1 ; $i++) 
    { 
     if($i == 0) 
     { 
     $sum1 = $array_b4_combine[$i][2]; 
     $sum2 = $array_b4_combine[$i][3]; 
     $sum3 = $array_b4_combine[$i][4]; 
     } 
    if(($array_b4_combine[$i][0] == $array_b4_combine[$i+1][0]) && ($array_b4_combine[$i][1] == $array_b4_combine[$i+1][1])) 
     { 
      $sum1 = $sum1 + $array_b4_combine[$i+1][2]; 
      $sum2 = $sum2 + $array_b4_combine[$i+1][3]; 
      $sum3 = $sum3 + $array_b4_combine[$i+1][4]; 
      $combined[$j][0] = $array_b4_combine[$i][0]; 
      $combined[$j][1] = $array_b4_combine[$i][1]; 
      $combined[$j][2] = $sum1; 
      $combined[$j][3] = $sum2; 
      $combined[$j][4] = $sum3; 

     } 
     else 
     { $j++; 
      $combined[$j][0] = $array_b4_combine[$i+1][0]; 
      $combined[$j][1] = $array_b4_combine[$i+1][1]; 
      $combined[$j][2] = $array_b4_combine[$i+1][2]; 
      $combined[$j][3] = $array_b4_combine[$i+1][3]; 
      $combined[$j][4] = $array_b4_combine[$i+1][4]; 
      $sum1 = $combined[$j][2]; 
      $sum2 = $combined[$j][3]; 
      $sum3 = $combined[$j][4]; 
     } 

     } 

    echo "<pre>"; 
    print_r($combined); 
    echo "</pre>"; 
?> 
관련 문제