Используйте array_reduce и array_map для динамических переменных

Я хочу иметь эту переменную $total[$i] выдача результата следующей функции:

$total[$i] = (array_reduce((array_map(function($x, $y) { return $x * $y; },
$corp_resp[$i], $corp_resp_template)),function($carry,$item){return $carry+=$item;},0));

Я получаю от $corp_resp_templateпример: массив (0.4,0.2,0.1) для $corp_resp array(массив (sub1 (0.2,0.3,0.5) arraysub2 (0.2,0.5,0.7)))

$corp_resp_template для этой операции только один. $corp_resp массив с подрешетками внутри, который зависит от $carCount в таком случае $carCount=2 Если это 4, то получим 4 подмассива, где эти значения будут интерполированы с $corp_resp_template будет только один массив одинакового размера $corp_resp,

Пример операции:

Итого 1 = (0,4 * 0,2 + 0,2 * 0,3 + 0,5 * 0,1) = 0,19 $ всего [0]

Итого 2 = (0,4 * 0,2 + 0,2 * 0,5 + 0,1 * 0,7) = всего 0,25 $ [1]

Эти итоговые значения будут вставлены в строки таблицы.

Спасибо.

1

Решение

Все выглядит вполне рабочим:

$corp_resp_template = [0.4,0.2,0.1];
$corp_resp = [[0.2,0.3,0.5],[0.2,0.5,0.7]];

for($i = 0;$i<count($corp_resp);$i++){

$total[$i] = (array_reduce(array_map(function($x, $y){
return $x * $y;
},$corp_resp[$i], $corp_resp_template),function($carry,$item){return $carry+=$item;},0));
}

print_r($total);

из:

Array
(
[0] => 0.19
[1] => 0.25
)
1

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector