Умножьте и добавьте 2 массива

У меня есть две переменные с именем $corp_resп:

var_dump($corp_resp)

строка (3) «0,3» строка (4) «0,35» строка (3) «0,4»

Другой: $corp_resp_template

var_dump($corp_res_template)´

строка (3) «0,4» строка (3) «0,6» строка (3) «0,8»

Я хочу добавить и умножить массивы:

$total = (0.3*0.4)+(0.35*0.6) +(0.4*0.8) => 0,12+0.21+0,32

$total = 0.65

Каков наилучший способ сделать это?

0

Решение

если оба ваших массива имеют одинаковую длину, вы можете запустить что-то вроде:

array_sum(array_map(
function($resp, $tpl){ return $resp * $tpl; },
$corp_resp, $corp_res_template));

Если массивы имеют неодинаковую длину, хвост более длинного массива будет оцениваться как (число * 0), поэтому игнорируя их при суммировании окончательного результата

2

Другие решения

Напишите функцию, чтобы сделать это

$corp_resp = array("0.3", "0.35", "0.4");
$corp_res_template = array("0.4", "0.6", "0.8");

function add_products($a1, $a2) {
if (!is_array($a1)) {
throw new Exception("a1 is not an array");
}
if (!is_array($a2)) {
throw new Exception("a2 is not an array");
}
if (sizeof($a1) != sizeof($a2)) {
throw new Exception("Arrays don't have same number of elements");
}

// both params are arrays and have same number of elements!

$count = sizeof($a1);
$multiplied = array();
for($i=0; $i<$count; $i++) {
// we assume that each element is a string representing a floatval so we need to cast as a float before multiplying
$multiplied[$i] = floatval($a1[$i]) * floatval($a2[$i]);
}
return array_sum($multiplied);
}

$val = add_products($corp_resp, $corp_res_template);

var_dump($val);
1

По вопросам рекламы [email protected]