我知道标题有点模糊,但我不知道怎么说它。我有这个包含名字和数字的数组。我想要做的是组合相同的名称,但添加该名称的数字。
所以这是数组:
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)
感谢。
答案 0 :(得分:1)
从这里开始:
$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);
答案 1 :(得分:1)
$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
)