0

タイトルが少し曖昧なのは知っていますが、他の言い方がわかりませんでした。名前と番号を含むこの配列があります。私がやろうとしているのは、同じ名前を組み合わせて、その名前の番号を合計することです。

だからここに配列があります:

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)

ありがとう。

4

2 に答える 2

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);
于 2012-08-21T16:18:17.620 に答える
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
)
于 2012-08-22T13:12:23.457 に答える