Используйте 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_templateexample: array (0.4,0.2,0.1) for $corp_resp array (array (sub1 (0.2,0.3,0.5) arrayysub2 (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]

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

Спасибо.


person Christophe Costa    schedule 18.04.2017    source источник
comment
Пожалуйста, четко укажите свой вклад и ожидаемый результат.   -  person Sahil Gulati    schedule 18.04.2017


Ответы (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
)
person Redr01d    schedule 18.04.2017