Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 两个数组求和的最佳方法_Php_Arrays_Sum - Fatal编程技术网

Php 两个数组求和的最佳方法

Php 两个数组求和的最佳方法,php,arrays,sum,Php,Arrays,Sum,我有两个阵列: $a = array(10, 2, 5, 10, 0); $b = array(1, 20, 11, 8, 3); 我需要总结并得出结果: $c = array(11, 22, 16, 18, 3); 关于如何在没有“foreach”的情况下执行此操作的任何建议?$c=array(); 对于($i=0;$i),如果没有您要求的“foreach”,您将无法做到这一点,您需要在两个数组上循环以获得相应的值 使用foreach的函数是: function sum_arrays($a

我有两个阵列:

$a = array(10, 2, 5, 10, 0);
$b = array(1, 20, 11, 8, 3);
我需要总结并得出结果:

$c = array(11, 22, 16, 18, 3);
关于如何在没有“foreach”的情况下执行此操作的任何建议?

$c=array();

对于($i=0;$i),如果没有您要求的“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);
试着

$c = array();
foreach (array_keys($a + $b) as $key) {
    $c[$key] = $a[$key] + $b[$key];
}

可以采用一种简单的方法

$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
)

请看。(这是基本PHP)您需要将
$a
的每个元素添加到数组
$b
的相应元素中,然后得到结果。我想知道最好的方法。我知道如何通过循环来实现。我使用了数组\u merge\u recursive()为了将所有数组递归合并为一个数组,我使用foreach拆分了每个内部数组,并使用array_sum()对内部数组进行求和。现在我只有一个数组添加了所有数组。这仅适用于具有相同索引的数组!第二种方法不需要PHP 7。参数解包()从PHP 5.6开始提供。@感谢您的提示-刚刚测试并更新了我的回答:“当且仅当传递了一个数组时,返回的数组将保留数组参数的键。如果传递了多个数组,则返回的数组将具有顺序整数键。”这意味着数组键不被保留。我最喜欢的两个答案。变量解是我最喜欢的。事实上,它导致了下一步:将$a和$b作为另一个数组的元素附加,比如,$x,然后添加…$x作为数组映射的第二个参数。它允许数组映射处理未定义数量的数组。这不是必需的,但在使用数据集时非常有用。尽管此问题和解决方案可能是基本的,但请始终在每个答案中包含一些解释。告诉OP和未来的研究人员您的代码是如何工作的,以及为什么建议这样做。虽然在这个问题中没有明确提出。此解决方案(与其他答案不同)保留数组键,甚至处理不同长度或不同键数组
Array
(
    [0] => 11
    [1] => 22
    [2] => 16
    [3] => 18
    [4] => 3
)