16

私は2つの配列を持っています:

$a = array(10, 2, 5, 10, 0);
$b = array(1, 20, 11, 8, 3);

要約して結果を得る必要があります:

$c = array(11, 22, 16, 18, 3);

「foreach」なしでこれを行う方法についての提案はありますか?

4

4 に答える 4

38

簡単なアプローチは

$c = array_map(function () {
    return array_sum(func_get_args());
}, $a, $b);

print_r($c);

または、PHP5.6を使用できる場合は、次のような可変個引数関数を使用することもできます

$c = array_map(function (...$arrays) {
    return array_sum($arrays);
}, $a, $b);

print_r($c);

出力

Array
(
    [0] => 11
    [1] => 22
    [2] => 16
    [3] => 18
    [4] => 3
)
于 2013-03-21T13:43:24.413 に答える
15

次のようにしてみてください

$c = array();
foreach (array_keys($a + $b) as $key) {
    $c[$key] = $a[$key] + $b[$key];
}
于 2013-03-21T13:40:50.173 に答える
8

要求した「foreach」なしでそれを行う方法はありません。それぞれの値を取得するには、両方の配列をループする必要があります。

foreachを使用する関数は次のようになります。

function sum_arrays($array1, $array2) {
    $array = array();
    foreach($array1 as $index => $value) {
        $array[$index] = isset($array2[$index]) ? $array2[$index] + $value : $value;
    }
    return $array;
}

今、あなたはする必要があります:

$c = sum_arrays($a, $b);
于 2013-03-21T13:39:38.017 に答える
1
$c = array();
for($i=0;$i<count($a);$i++) {
  $c[$i] = $a[$i]+$b[$i];
}
于 2013-03-21T13:35:41.577 に答える