Php 循环遍历多维数组并向新数组添加值,同时以不同方式处理具有某些匹配值的元素

Php 循环遍历多维数组并向新数组添加值,同时以不同方式处理具有某些匹配值的元素,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有以下数组 Array ( [0] => Array ( [0] => Array ( [productCode] => HQ768H [startTimeLocal] => 2018-04-17 14:00:00 [endTimeLocal] => 2018-04-17 16:00:00 [totalQuantity] => 2

我有以下数组

Array (
    [0] => Array (
        [0] => Array (
            [productCode] => HQ768H
            [startTimeLocal] => 2018-04-17 14:00:00
            [endTimeLocal] => 2018-04-17 16:00:00
            [totalQuantity] => 2
            [amount] => 170
            [extras] => Array ()
            [transferReturn] =>
            [subtotal] => 170
        )
        [1] => Array (
            [productCode] => PLJ6HP
            [startTimeLocal] => 2018-04-15 14:00:00
            [endTimeLocal] => 2018-04-15 16:00:00
            [totalQuantity] => 2
            [amount] => 170
            [extras] => Array ()
            [transferReturn] =>
            [subtotal] => 170
        )
        [2] => Array (
            [productCode] => PLJ6HP
            [startTimeLocal] => 2018-04-15 14:00:00
            [endTimeLocal] => 2018-04-15 16:00:00
            [totalQuantity] => 2
            [amount] => 170
            [extras] => Array ()
            [transferReturn] =>
            [subtotal] => 170
        )
    )
)
我正在尝试使用由productCode、startTimeLocal和totalQuantity组成的PHP创建另一个数组。。。但是如果两个或多个元素具有相同的productCode和相同的startTimeLocal,我需要通过添加新值而不是添加新的数组元素来更新totalQuantity

我唯一能想到的代码是一长串嵌套的foreach循环,它们根本无法执行我需要的操作。我对此相当陌生。如果有人能帮我或给我指出正确的方向,我将非常感激。谢谢

下面是我想要达到的目标

Array (
    [0] => Array (
        [0] => Array (
            [productCode] => HQ768H
            [startTimeLocal] => 2018-04-17 14:00:00
            [totalQuantity] => 2
        )
        [1] => Array (
            [productCode] => PLJ6HP
            [startTimeLocal] => 2018-04-15 14:00:00
            [totalQuantity] => 4
        )
    )
)

可以通过循环使用旧数组来实现这一点。然后添加一个新数组作为元素(如果它还不存在)。否则,只需向现有元素添加
totalQuantity

$new_array = [];

foreach ($array as $inner_array)
    foreach ($inner_array as $element) {

        //check if already in $new_array and get index
        $index = -1;

        for ($i = 0; $i < count ($new_array); $i++)
            if ($new_array[$i]['productCode'] == $element['productCode'])
                if ($new_array[$i]['startTimeLocal'] == $element['startTimeLocal'])
                    $index = $i;

        //check if it was found
        if ($index == -1) {
            //if not add to $new_array
            $new_array[] = [
                'productCode' => $element['productCode'],
                'startTimeLocal' => $element['startTimeLocal'],
                'totalQuantity' => $element['totalQuantity']
            ];
        } else {
            //otherwise increase totalQuantity
            $new_array[$index]['totalQuantity'] += $element['totalQuantity']
        }

    }
$new_数组=[];
foreach($array作为$internal\u数组)
foreach($内部数组作为$元素){
//检查是否已在$new_数组中并获取索引
$index=-1;
对于($i=0;$i$element['productCode'],
'startTimeLocal'=>$element['startTimeLocal'],
'totalQuantity'=>$element['totalQuantity']
];
}否则{
//否则增加总量
$new_数组[$index]['totalQuantity']+=$element['totalQuantity']
}
}

如果您想先得到答案,请接受某人对您的帖子所做的编辑。。。因为在它当前的形式下,它是不可读的,你能不能也做一个示例数组,你希望结果是什么样子的?谢谢,我认为这是我需要的。目前我得到了以下结果,但并不确定为什么。。。数组([]=>Array([startTimeLocal]=>[totalQuantity]=>0)[v]=>Array([startTimeLocal]=>v[totalQuantity]=>v])此外,我认为这可能只检查productCode匹配情况。。。我如何检查productCode和startTimeLocal是否匹配(两者都必须匹配)?@JasonWhalan抱歉,我没有看到。我更新了我的答案以满足您的需要。希望能有帮助。像你这样的人正在保持互联网的运转。非常感谢,我真的很感激,在来这里之前我花了好几天的时间试着这么做。再次感谢。