将array_reduce和array_map用于动态变量

时间:2017-04-18 14:54:43

标签: php arrays function array-map array-reduce

我想让变量$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示例收到:$corp_resp array的数组(0.4,0.2,0.1)(数组(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 个答案:

答案 0 :(得分: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
)