如何处理具有多个键和需要组合的整数的数组


How to handle an array with multiple keys and integers that needs to be combined?

我知道标题有点模糊,但我不知道该怎么写。我有一个包含名称和数字的数组。我想做的是把相同的名字组合起来,但把那个名字的数字加起来。

这里是数组:

array (array[0] => ([tom] => 4) array[1] => ([mike] => 6) array[2] => ([tom] => 6) array[3] => ([alice] => 9) array[4] => ([alice] => 10) array[5] => ([mike] => 3))

*很确定我在上面打错了,但我想你明白我的意思了吗?

因此,我不确定将名称组合为唯一的最佳方式,但同时将该名称的所有数字相加,因此最终结果看起来是这样的。

array ([tom] => 10 [mike] => 9 [alice] => 19)

谢谢。

从这里开始:

$source = array(
    array('tom' => 4),
    array('mike' => 6),
    array('tom' => 6),
    array('alice' => 9),
    array('alice' => 10),
    array('mike' => 3)
);
$result = array_fill_keys(array_map("key",$source),0);
foreach ($source as $person)
    foreach ($person as $name => $value)
        $result[$name] += $value;
var_dump($result);
$source = array(
    array('tom' => 4),
    array('mike' => 6),
    array('tom' => 6),
    array('alice' => 9),
    array('alice' => 10),
    array('mike' => 3)
);
$result = call_user_func_array('array_merge_recursive', $source);
echo '1st step: '; print_r($result);
$result = array_map('array_sum', $result);
echo '2nd step: '; print_r($result);

结果:

1st step: Array
(
    [tom] => Array
        (
            [0] => 4
            [1] => 6
        )
    [mike] => Array
        (
            [0] => 6
            [1] => 3
        )
    [alice] => Array
        (
            [0] => 9
            [1] => 10
        )
)
2nd step: Array
(
    [tom] => 10
    [mike] => 9
    [alice] => 19
)