在php中乘以两个数组

时间:2013-08-25 18:35:21

标签: php arrays

我有一个挑战乘以两个数组。 这就是我打算做的事情

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

8 个答案:

答案 0 :(得分:16)

您可以为array_map提供多个数组,它将处理相应的元素:

$total = array_map(function($x, $y) { return $x * $y; },
                   $office_price, $office_quantity);

答案 1 :(得分:1)

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

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

在这种程度上使用你的foreach:

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

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

答案 2 :(得分: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);

答案 3 :(得分:1)

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

答案 4 :(得分:0)

使用此

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

答案 5 :(得分: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) }

答案 6 :(得分:0)

$a= array (2,2);
$b= array(8000,1234);
$total = array();
for ($i=0;$i<count($a);$i++) {
   $total[] = $a[$i] * $b[$i];
  }

答案 7 :(得分:0)

function a($a, $b)
{
    $r = [];

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

    return $r;
}