乘以两个数组

时间:2017-05-18 15:00:12

标签: php arrays

我有两个数组,我想要乘以并获得最终总和。第一个是固定的,但第二个可能缺少元素。例如:

$array1 = array(1, 2, 3, 4, 5);
$array2 = array(1, 3, 5);

让我们说我遗失了元素$array2[1]$array2[3]。我希望能够将其余部分相乘并总结为:

$sum = array_sum($array1[0] * $array2[0] + $array1[1] * $array2[1] + $array1[2] * $array2[2] + $array1[3] * $array2[3] + $array1[4] + $array2[5]);

阵列的长度也可能不同,所以不能按照我上面的方式进行。有什么建议吗?

4 个答案:

答案 0 :(得分:0)

如果我理解你的问题,并且你正在寻找数组乘法,你可以使用2 for循环,迭代其中一个并乘以。你可能正在寻找这样的东西:

for ($i = 0; $i < count($array1); $i++) {
    for ($j = 0; $j < count($array2); $j++) {
        $sum += $array1[$i] * $array2[$j];
    }
}

答案 1 :(得分:0)

好的,我没有使用自己的建议,但我认为这可能有用吗?

ClassB

假设ClassC中的所有元素都存在于$total = 0; foreach ($array1 as $index => $value) { if (isset($array2[$index])) $total += $value*$array2[$index]; else $total += $value; } echo $total; 中,但不一定相反。

答案 2 :(得分:0)

您可以将array2缺失值填充为1,然后使两个数组具有相同的长度。

$missingKeys = [1,3];
foreach($missingKeys as $k)
{
  $array2[$k] = 1;
}
$sum = 0;
foreach($array1 as $k => $v)
{
  $sum += $v * $array1[$k];
}

答案 3 :(得分:0)

正如您在问题中写道的那样,第一个数组正在引导(包含所有索引),您只需要迭代它并最终乘以第二个数组中的值或一个:

$sum = 0;
foreach ($array1 as $k => $v) {
    $sum += $v * ($array2[$k] ?? 1);
}

与接受的答案不同,不需要操纵第二个数组。