2013-08-25 4 views
0

У меня есть вызов, умножающий два массива. это то, что я намерен делатьУмножение двух массивов в php

Array1 ([0] => 2 [1] => 2) 
Array2 ([0] => 8000.00 [1] => 1234.00) 

Каждый раз, когда я умножить это он разбивает его на 4 и возвращает результат, как это

Array ([0] => 16000 [1] => 16000 [2] => 2468 [3] => 2468) 

Однако, когда я прохожу одного единые данные, которые он получает это право , Вот мой код, я буду признателен за любую помощь, которую я могу получить. Благодаря

$total = array(); 
foreach($office_price as $price){ 
    foreach($office_quantity as $quantity){ 
     $total[] = $price * $quantity; 
    } 
} 
+0

Что вы имеете в виду «отдельные данные»? –

ответ

1

Вы перебрать как массивы, так что вы получите все значения в два раза.

Как известно, массив создается с использованием ключей и значений.

Используйте Еогеасп до такой степени:

$total = array(); 
foreach ($office_price as $key=>$price) { 
    $total[] = $price * $office_quantity[$key]; 
} 

Вам нужно только в цикле один массив, используя значение из второго массива с тем же ключом, вы получите правильный результат.

+0

Что делать, если ключи не всегда одинаковы для обоих массивов? – bystwn22

+1

Тогда большинство ответов здесь не будут выполнены ... –

+0

Это стоит упомянуть, но ОП использует и умножает простые индексированные массивы. Если он будет вводить другие ключи или разные длины в массивы, тогда он, вероятно, столкнется с другими проблемами, которые он также должен будет решить. –

0

Используйте этот

$total = array(); 
for($i=0;$i<count($office_price);$i++){ 
     $total[] = $office_price[$i] * $office_quantity[$i]; 
} 
0

Чтобы умножить два массива, вы должны сделать это по-разному: вложенные петли не задействованы. Например, если вы хотите получить $total[2], тогда его значение равно $office_price[2] * $office_quantity[2]. Таким образом, один цикл foreach. Для прокрутки ключей используйте ... as $key => $price.

$office_price = array(10, 100, 1000); 
$office_quantity = array(1, 2, 3); 

$total = array(); 
foreach($office_price as $key => $price){ 
    $total[$key] = $price * $office_quantity[$key]; 
} 

var_dump($total); 
// array(3) { [0]=> int(10) [1]=> int(200) [2]=> int(3000) } 
16

Вы можете дать несколько массивов array_map, и он будет обрабатывать соответствующие элементы:

$total = array_map(function($x, $y) { return $x * $y; }, 
        $office_price, $office_quantity); 
0
$a= array (2,2); 
$b= array(8000,1234); 
$total = array(); 
for ($i=0;$i<count($a);$i++) { 
    $total[] = $a[$i] * $b[$i]; 
    } 
+0

Спасибо .. это сработало и для меня –

1

Использование массива карты функция это будет работает

$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
function a($a, $b) 
{ 
    $r = []; 

    for($i = 0; $i < (count($a)); $i ++) 
    { 
     $r[] = $a[$i] * $b[$i]; 
    } 

    return $r; 
} 
Смежные вопросы