在PHP中组合和添加数组值

在PHP中组合和添加数组值,php,arrays,Php,Arrays,我有一个如下结构的数组: Array ( [0] => Array ( [0] => cmi.interactions.0.result [1] => 1 [2] => 0 ) [1] => Array ( [0] => cmi.interactions.0.result [1

我有一个如下结构的数组:

Array
(
    [0] => Array
        (
            [0] => cmi.interactions.0.result
            [1] => 1
            [2] => 0
        )

    [1] => Array
        (
            [0] => cmi.interactions.0.result
            [1] => 0
            [2] => 1
        )

    [2] => Array
        (
            [0] => cmi.interactions.0.result
            [1] => 0
            [2] => 1
        )

    [3] => Array
        (
            [0] => cmi.interactions.1.result
            [1] => 1
            [2] => 0
        )

    [4] => Array
        (
            [0] => cmi.interactions.1.result
            [1] => 1
            [2] => 0
        )

    [5] => Array
        (
            [0] => cmi.interactions.1.result
            [1] => 1
            [2] => 0
        )
)
我想要的是:

Array
(
    [0] => Array
        (
            [0] => cmi.interactions.0.result
            [1] => 1
            [2] => 2
        )

    [1] => Array
        (
            [0] => cmi.interactions.1.result
            [1] => 3
            [2] => 0
        )
)

基本上,我想知道如何找到每个子数组中的第一个值匹配的位置,并相应地添加第二个和第三个值?

类似的内容,没有检查它

$out = array();
foreach($arr as $el)
  if (!isset($out[$el[0]]))
     $out[$el[0]] = $el;
  else
     for($i = 1; $i < count($el); $i++)
        $out[$el[0]][$i] += $el[$i];
$out=array();
外汇($arr为$el)
如果(!isset($out[$el[0]]))
$out[$el[0]]=$el;
其他的
对于($i=1;$i

之后可以删除键,如
$out=array\u值($out)

对于这种情况,可以使用以下算法:-

  • 对数组排序
  • 迭代数组,如果第0个元素已更改,则跟踪数组
  • 在两个不同的变量中保持两个和
  • 下面是算法的提示。我没有测试它,因此,它可能无法完全工作。但这应该给你一个很好的提示,让你继续下去

    $prevValue="";
    $sum1=0;
    $sum2=0;
    $index=0;
    foreach ($arr as $value) {
        if($prevValue==$value[0])
        {
            if(value[1]==1)
                $sum1++;
            if(value[2]==1)
                $sum2++;
        }else{
            $ansArr[$index]=array($value[0], $sum1,$sum2);
        }
    
        $prevValue=$value[0];
    }
    

    给你。我们将第二个数组构建为$a2,并向其中添加元素,然后将总和累加到其中。在你的价值观上进行了测试

    function parse($a)
    {
        $a2 = array();
        for ($i = 0; $i < sizeof($a); $i++) {
            $isFound = false;
            for ($i2 = 0; $i2 < sizeof($a2); $i2++) {
                if ($a[$i][0] == $a2[$i2][0]) {
                    // We've already run into this search value before
                    // So add the the elements
                    $isFound = true;
                    $a2[$i2][1] += $a[$i][1];
                    $a2[$i2][2] += $a[$i][2];
                    break;
                }
            }
            if (!$isFound) {
                // No matches yet
                // We need to add this one to the array
                $a2[] = $a[$i];
            }
        }
        return $a2;
    }
    
    函数解析($a)
    {
    $a2=数组();
    对于($i=0;$i
    似乎非常可行,您有哪些代码尝试这样做?