PHP合并行

PHP合并行,php,arrays,rows,Php,Arrays,Rows,我正在从事一个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]]; 输出应为: combi

我正在从事一个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]];
输出应为:

 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]];
这是我的代码:

            $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 = [];
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);
$combined=[];
foreach($array\u b4\u组合为$i=>$arrayRow){
$k=$arrayRow[0].'.$arrayRow[1];
如果(isset($合并[$k]))

对于($i=2;$i,以下是我如何解决您的问题的。代码可以优化

<?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>"; 
?> 

<?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>"; 
?>