2013-03-10 114 views
0

我有一個非常簡單的問題,但由於某種原因輸出不是我想要的。 我有2個數組:php數組中的乘法元素

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

因此,我想算出是如何將多個的total_hours相應元素與hourly_rate(例如元件1:10 * 15 = 150),然後把此成陣列稱爲total_sum(total_sum已經初始化)。這是我迄今爲止所做的:

$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,並不明白爲什麼。

非常感謝!

+0

請澄清你的問題。你的代碼說總和是一個整數而不是數組。另外,這是關於0的是什麼?你的結果似乎是一個數組。 – 2013-03-10 17:33:13

+0

我的歉意,忽略總數。當我做打印聲明時,我也得到0。 – user2093306 2013-03-10 17:46:11

回答

0

以下是基於this answer by Aarolama Bluenk,只要兩個數組大小都一樣應該工作:

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

謝謝,這對我有用! – user2093306 2013-03-10 17:46:42

0

你不想有兩個循環,只有一個:

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

爲了讓您的最後一個數組的總和,使用array_sum

+0

我試過你的建議,但由於某種原因它現在迭代了3次,我不知道爲什麼,不要假設你有任何想法? – user2093306 2013-03-10 17:38:28

+0

它重複三次,因爲你的數組只有三個元素。你想把兩個數組(每個都有三個元素)相乘,所以你只需要循環三次就可以實現。 – Daedalus 2013-03-10 17:40:47

+0

我創建了一個小提示向您展示:http://phpfiddle.org/main/code/2xc-wnj – Daedalus 2013-03-10 17:42:35

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); 
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]; 
}