Php 多维数组-按键合并和添加

Php 多维数组-按键合并和添加,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有以下阵列: array( [7.7] =>100 ) array( [8.0] =>500 ) array( [8.0] =>1000 ) array( [7.7] =>2000 ) 我需要的是按键对这些数组进行分组并求和,所以我需要如下数组: array( [7.7] =>2100 [8.0] =>1500 ) 我试着先把它们合并起来,但我迷路了 所以,我从foreach循环中的数据库中获取数据:

我有以下阵列:

array(
    [7.7] =>100
)

array(
    [8.0] =>500
)

array(
    [8.0] =>1000
)

array(
    [7.7] =>2000
)
我需要的是按键对这些数组进行分组并求和,所以我需要如下数组:

array(
    [7.7] =>2100
    [8.0] =>1500
)
我试着先把它们合并起来,但我迷路了

所以,我从foreach循环中的数据库中获取数据:

$rate_tax = array();

foreach($pos as $position) {
    $rate_tax[$position->tax] = $position->$price;
}
而我得到的是印刷税(rate\u tax)


因此,我错过了值的加法。

您可以尝试类似的方法

$result = array();

//Put all the input arrays inside an array so you can loop through it
$array = array($input1, $input2, $input3);
//$input1, 2 and 3 being your input arrays

foreach ($array as $input) {

    foreach ($input as $key => $value) {

        //Set the initial sum result to 0
        if(!isset($result[$key]))
            $result[$key] = 0;

        $result[$key] += $value;
    }
}

你就快到了。只需根据
税费对
价格
进行汇总,而不是重置:

$rate_tax = array();

foreach($pos as $position) {

    // Use the ternary operator to check if $rate_tax[$position->tax] already exists and add to it or start at zero
    $rate_tax[$position->tax] = (isset($rate_tax[$position->tax]) ? $rate_tax[$position->tax] : 0) + $position->$price;
}

如果您不熟悉三元操作,请查看:


请展示您尝试过的内容。如何获得这些阵列?每个阵列总是有一个键,或者它们可以有更多键?@MickaelLeger一个合适的解决方案可以很容易地解决这两种情况,因此这是一个没有意义的问题。更大的问题是没有做出任何尝试updated@MonkeyZeus当然但我只是想知道他是否总是有4个数组,以及他是如何得到这些数组的,因为他不必等待X数组,然后将它们分组+计算,他可能会在得到答案的同时得到正确的结果。谢谢答案,但数组的数量会有所不同。每次创建数组时,只需添加你的
$rate\u tax
数组即可一个。@pecoou没问题,我很高兴你发布了你尝试过的代码,这样我就不用猜数据源了。很抱歉,我意识到答案不是completed@Pecooou别担心。只要你能提供一个答案,你就会发现其他人不必问愚蠢的澄清问题:)
$rate_tax = array();

foreach($pos as $position) {

    // Use the ternary operator to check if $rate_tax[$position->tax] already exists and add to it or start at zero
    $rate_tax[$position->tax] = (isset($rate_tax[$position->tax]) ? $rate_tax[$position->tax] : 0) + $position->$price;
}