2013-03-10 2 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

Приносим извинения, игнорируем общую сумму. Также я получаю 0, когда я делаю заявление печати. – user2093306

ответ

0

Следующая основана на this answer by Aarolama Bluenk и должен работать до тех пор, как оба массива имеют одинаковый размер:

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

Спасибо, это работает на меня! – user2093306

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

+0

Итерирует три раза, потому что ваш массив имеет только три элемента. Вы хотели бы объединить два массива (каждый с тремя элементами) вместе, поэтому вы хотите только три цикла, чтобы это произошло. – Daedalus

+0

Я создал скрипку, чтобы показать вам: http://phpfiddle.org/main/code/2xc-wnj – Daedalus

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]; 
} 
Смежные вопросы