Intereting Posts
Синтаксическая ошибка с IF EXISTS UPDATE ELSE INSERT Как получить текст в массиве между всеми тегами <span> из HTML? Получить контент DIV с внешнего веб-сайта JSONP и GET с обратными вызовами – помощь в исправлении ошибок Производительность MySQL – позиция «IN» против равных (=) для одного значения phpunit не находит никаких тестов с тегом Director xml, но делает с (некоторыми) файлами теги Как разрешить кодированные символы URI в URL-адресах CodeIgniter? PHP заменяет все происшествия определенного шаблона строки в тексте в формате HTML Проверить $ _POST является числовым, тогда сделайте это, если не сделаете иначе новые строки (\ r \ n) не работают в теле письма Как передать дополнительные параметры объекту routeMatch? Как добавить разбивку на страницы в массиве Как создать уникальный идентификатор заказа (только для отображения пользователя) с фактическим идентификатором заказа? Проверка даты в codeigniter Вычитание времени в PHP

Умножение двух массивов в 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; } } 

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

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

Используйте ваш 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; }