将多维数组(php)中的特定值相加

我得到了这样的多维数组:


Totalarray

(

[0] => Array

    (

        [city] => NewYork

        [cash] => 1000

    )


[1] => Array

    (

        [city] => Philadelphia

        [cash] => 2300

    )


[2] => Array

    (

        [city] => NewYork

        [cash] => 2000

    )

)

我想对具有相同value [city]的子数组的[cash]值求和,并获得一个像这样的数组:


Totalarray

(

[0] => Array

    (

        [city] => NewYork

        [cash] => 3000

    )


[1] => Array

    (

        [city] => Philadelphia

        [cash] => 2300

    )

)

我该怎么做?


莫回无
浏览 578回答 3
3回答

慕森卡

使用功能array_reduce()组合具有相同功能的项目city:$input = array(    array('city' => 'NewYork',      'cash' => '1000'),    array('city' => 'Philadelphia', 'cash' => '2300'),    array('city' => 'NewYork',      'cash' => '2000'),);$output = array_reduce(    // Process the input list    $input,    // Add each $item from $input to $carry (partial results)    function (array $carry, array $item) {        $city = $item['city'];        // Check if this city already exists in the partial results list        if (array_key_exists($city, $carry)) {            // Update the existing item            $carry[$city]['cash'] += $item['cash'];        } else {            // Create a new item, index by city            $carry[$city] = $item;        }        // Always return the updated partial result        return $carry;    },    // Start with an empty list    array());

白衣染霜花

使用不止一个循环(或循环功能)来求和这些值是无效的。这是一种使用临时键构建结果数组,然后在循环终止后重新索引结果数组的方法。代码:(演示)$array=[    ['city' => 'NewYork', 'cash' => '1000'],    ['city' => 'Philadelphia', 'cash' => '2300'],    ['city' => 'NewYork', 'cash' => '2000']];foreach($array as $a){    if(!isset($result[$a['city']])){        $result[$a['city']] = $a;  // store temporary city-keyed result array (avoid Notices)    }else{        $result[$a['city']]['cash'] += $a['cash'];  // add current value to previous value    }}var_export(array_values($result));  // remove temporary keys
打开App,查看更多内容
随时随地看视频慕课网APP