1

我有一个挑战将两个数组相乘。这就是我打算做的

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;
    }
}
4

8 回答 8

18

你可以给多个数组array_map,它会处理相应的元素:

$total = array_map(function($x, $y) { return $x * $y; },
                   $office_price, $office_quantity);
于 2013-08-25T18:42:10.473 回答
3

你遍历两个数组,所以你得到每个值两次。

如您所知,数组是使用键和值构建的。

使用你的 foreach 到那个程度:

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

您只需要循环一个数组,并通过使用具有相同键的第二个数组中的值,您可以获得正确的结果。

于 2013-08-25T18:39:39.327 回答
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);
于 2014-09-06T12:35:35.990 回答
1

$total_in_array = array_map(function($x, $y) { return $x * $y; }, $office_price, $office_quantity); // 这将返回相乘数字的数组
$total = array_sum($total_in_array); // 这将返回总数

于 2020-09-26T00:34:40.840 回答
0

用这个

$total = array();
for($i=0;$i<count($office_price);$i++){
        $total[] = $office_price[$i] * $office_quantity[$i];
}
于 2013-08-25T18:39:20.600 回答
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) }
于 2013-08-25T18:41:17.290 回答
0
$a= array (2,2);
$b= array(8000,1234);
$total = array();
for ($i=0;$i<count($a);$i++) {
   $total[] = $a[$i] * $b[$i];
  }
于 2013-08-25T18:54:10.687 回答
0
function a($a, $b)
{
    $r = [];

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

    return $r;
}
于 2014-10-21T11:44:38.287 回答