我有两个数组,我想要乘以并获得最终总和。第一个是固定的,但第二个可能缺少元素。例如:
$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]);
阵列的长度也可能不同,所以不能按照我上面的方式进行。有什么建议吗?
答案 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);
}
与接受的答案不同,不需要操纵第二个数组。