0

我有一个非常简单的问题,但由于某种原因,输出不是我想要的。我有 2 个数组:

total_hours = array(10, 20, 30);
hourly_rate = array(15, 10, 15);

所以我想要解决的是如何将对应的元素total_hourshourly_rate(eg element 1: 10*15 = 150) 相乘,然后将其放入一个名为total_sum(total_sum has been initialized) 的数组中。这是我到目前为止所做的:

$total_sum = 0;
for($i=0; $i < sizeof($hourly_rate); $i++) {
    for($a=0; $a < sizeof($total_hours); $a++) {
        $total_sum = ($hourly_rate[$i]*$total_hours[$a]); 
    } 
    $total_pay[] = $total_sum;    
}  

目前我得到 0 并且不明白为什么。

非常感谢!

4

4 回答 4

1

您可以使用带有匿名函数的 array_map 将小时数乘以费率。array_map 遍历给定的数组并将结果作为数组返回。查看http://php.net/manual/en/function.array-map.php了解更多信息。

$total_hours = array(10, 20, 30);
$hourly_rate = array(15, 10, 15);    

$total_pay = array_map(function($hour, $rate) {
    return $hour * $rate;
}, $total_hours, $hourly_rate);
于 2013-03-10T17:37:49.470 回答
0

你不想有两个循环,只有一个:

$total_pay = array();
for($i=0; $i < count($hourly_rate); $i++) {
  $total_pay[] = $hourly_rate[$i]*$total_hours[$i]; 
}

要获得最终数组的总和,请使用array_sum.

于 2013-03-10T17:24:37.030 回答
0

以下内容基于Aarolama Bluenk 的这个答案,只要两个数组的大小相同,就应该可以工作:

for($i = 0; $i < count($total_hours); $i++) {
    $result[] = $total_hours[$i] * $hourly_rate[$i];
}
于 2013-03-10T17:37:34.913 回答
0
$total_hours = array(10, 20, 30);
$hourly_rate = array(15, 10, 15);

$mi = new MultipleIterator();
$mi->attachIterator(new ArrayIterator($total_hours));
$mi->attachIterator(new ArrayIterator($hourly_rate));

$total_pay = array();
foreach($mi as $details) {
    $total_pay[] = $details[0] * $details[1];
}
于 2013-03-10T17:37:55.457 回答