У меня есть вызов, умножающий два массива. это то, что я собираюсь делать
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; } }
Вы перемещаетесь по обеим массивам, так что вы получаете каждое значение дважды.
Как вы знаете, массив создается с использованием ключей и значений.
Используйте ваш foreach в такой степени:
$total = array(); foreach ($office_price as $key=>$price) { $total[] = $price * $office_quantity[$key]; }
Вам нужно всего лишь зацикливать один массив, и, используя значение из второго массива с тем же ключом, вы получите правильный результат.
Вы можете передать несколько массивов array_map
и обработать соответствующие элементы:
$total = array_map(function($x, $y) { return $x * $y; }, $office_price, $office_quantity);
Используйте функцию карты массива, она будет работать
$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);
Использовать это
$total = array(); for($i=0;$i<count($office_price);$i++){ $total[] = $office_price[$i] * $office_quantity[$i]; }
Чтобы умножить два массива, вы должны сделать это по-разному: вложенные петли не задействованы. Например, если вы хотите получить $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) }
$a= array (2,2); $b= array(8000,1234); $total = array(); for ($i=0;$i<count($a);$i++) { $total[] = $a[$i] * $b[$i]; }
function a($a, $b) { $r = []; for($i = 0; $i < (count($a)); $i ++) { $r[] = $a[$i] * $b[$i]; } return $r; }