0

次の 2 つの配列があるとします。

$first=array(
'books'=>1,
'videos'=>5,
'tapes'=>7,
);

$second=array(
'books'=>3,
'videos'=>2,
'radios'=>4,
'rc cars'=>3,
);

それらを組み合わせて、最終的に

$third=array(
'books'=>4,
'videos'=>7,
'tapes'=>7,
'radios'=>4,
'rc cars'=>3,
);

ここで関数を見ました:同じキーの配列の値を合計する方法は? しかし、それはキーを失います。

4

2 に答える 2

1

次の行に沿って何かを使用できます。

function sum_associatve($arrays){
    $sum = array();
    foreach ($arrays as $array) {
        foreach ($array as $key => $value) {
            if (isset($sum[$key])) {
                $sum[$key] += $value;
            } else {
                $sum[$key] = $value;
            }
        }
    } 
    return $sum;
}
$third=sum_associatve(array($first,$second));
于 2013-11-14T20:59:45.883 に答える
0

違いがあるだけです... func_get_args()、クロージャーを使用し、引数を配列に強制します。

function sum_associative()
{
    $data = array();
    array_walk($args = func_get_args(), function (array $arg) use (&$data) {
        array_walk($arg, function ($value, $key) use (&$data) {
            if (isset($data[$key])) {
                $data[$key] += $value;
            } else {
                $data[$key] = $value;
            }
        });
    });

    return $data;
}
于 2013-11-14T21:53:48.703 に答える