PHP乘以多维数组的值

时间:2013-12-24 01:17:04

标签: php arrays multidimensional-array multiplication

我已经尝试过搜索这个,因为我认为没有人试图这样做是独一无二的。我只是找不到合适的关键词来搜索我的答案!

我有这个数组

array(
 0 => array(
      'oranges'=> 4.00,
      'apples' => 2.00,
      ),
 1 => array(
      'oranges' => 2.00,
      'apples' => 1.82,
      'peaches' => 1.2,
      ),
 2 => array(
      'oranges' => 2.20,
      ),
);

我想要做的是找到所有橙子值的值相乘(4 * 2 * 2.20)并且苹果的所有值相乘(2 * 1.82)。 值数组的数量是可变的,并且数组内的值的数量是可变的。

2 个答案:

答案 0 :(得分:3)

它使用foreachisset和您的普通if/else语句的组合。

$products = array();
foreach ($array as $a) {
    foreach ($a as $key => $value) {
        if (!isset($products[$key])) $products[$key] = $value;
        else $products[$key] = $products[$key] * $value;
    }
}

var_dump($products);

应该是不言自明的,因为你所做的只是使用相同的键来获取所有最低级元素的乘积。

答案 1 :(得分:2)

虽然sjagr的答案是最好的解决方案,但我有一个替代方法array_column(PHP 5> = 5.5.0),只需要一个foreach循环:

<?php
$arr = array(
    array(
        "oranges" => 4.00,
        "apples" => 2.00
    ),
    array(
        "oranges" => 2.00,
        "apples" => 1.82,
        "peaches" => 1.2
    ),
    array(
        "oranges" => 2.20
    )
);
$_arr = array();
    foreach(array("oranges", "apples", "peaches") as $val){
    $_arr[$val] = array_product(array_column($arr, $val));
    }
print_r($_arr);
?>

结果将是:

Array
(
    [oranges] => 17.6
    [apples] => 3.64
    [peaches] => 1.2
)

演示:https://eval.in/82322