PHP 计算两个数组然后相加

PHP calculating two arrays and then add their sum

我想计算一个数组到另一个数组,然后像这样添加两者:

   Array1(4,8,7,12);
   Array2(3,6);
   

结果是这样的: 3x4+3x8+3x7+3x12+6x4+6x8+6x7+6x12 = 279

我尝试使用此代码,但由于我对 php 还是个新手,所以我仍然没有提供任何提示很高兴提前致谢

<?php 



tab1(4,8,7,12);
tab2(3,6);
$s=0;
for($i=0; $i<$tab1[3]; $i++){
       for($j=0; $j<$tab2[1]; $j++){
           $s = $s + tab[i] * tab[j];
}
echo "$s";
}
?>

这其实是小菜一碟。我不确定 tab1 是什么意思,但我假设您正在尝试使用此函数来获取所需(输入)数字的数组。

使用 foreach 循环遍历两个数组,我想出了下面的代码:

<?php
$a = [4,8,7,12];
$b = [3,6];
$sum = 0;
foreach ($b as $valueInB) {
    foreach ($a as $valueInA) {
        $sum += $valueInA * $valueInB;
    }
}
echo $sum;
?>

这导致:

279

如果您坚持使用 for 循环,您可以 运行 下面的代码得到相同的结果:

<?php
$a = [4,8,7,12];
$b = [3,6];
$sum = 0;
$bLength = count($b);
$aLength = count($a);
for ($i=0; $i < $bLength  ; $i++) { 
    $valueInB = $b[$i];
    for ($j=0; $j < $aLength ; $j++) { 
        $valueInA = $a[$j];
        $sum += $valueInA * $valueInB;
    }
} 
echo $sum;
?>

请注意,您应该在循环之外使用 count,因为遍历数组并每次调用 count 并不是一种有效的方法。 (感谢 Will B 的评论)

对于没有迭代的更简单的方法,您可以在两个数组上使用 array_sum

示例:https://3v4l.org/3gtgE

$a = [4,8,7,12];
$b = [3,6];

$c = array_sum($a) * array_sum($b);
var_dump($c);

结果

int(279)

之所以有效,是因为以下操作的顺序:

(3*4) + (3*8) + (3*7) + (3*12) + (6*4) + (6*8) + (6*7) + (6*12) = 279

等于a的总和乘以b的总和:

(4+8+7+12) * (3+6) = 279