2011-06-22 90 views
0

这里的阵列的总价值为我的数组如何获得基于内部内容

[Computers] => Array 
(
    [0] => Array 
     (
      [product_id] => 78 
      [price] => 999.99 
      [quantity] => 2 
     ) 

    [1] => Array 
     (
      [product_id] => 70 
      [price] => 49.99 
      [quantity] => 6 
     ) 

) 


[Scanners] => Array 
(
    [0] => Array 
     (
      [product_id] => 65 
      [price] => 99.99 
      [quantity] => 7 
     ) 
    [1] => Array 
     (
      [product_id] => 70 
      [price] => 149.99 
      [quantity] => 5 
     ) 
    [2] => Array 
     (
      [product_id] => 70 
      [price] => 10.99 
      [quantity] => 1 
     ) 

) 

我一直在寻找一种方式,以总量可达外部阵列的基础上,内部阵列

因此,例如Computers阵列有两个产品,我需要根据数量得到总数。因此,例如(999.99 * 2)+(49.99 * 6)= 2299.92为计算机阵列等等...

+0

哥们,我们不能为你完成整个任务。首先排序,现在呢? :- – FinalForm

+0

'我正在寻找一种方式 - - 你发现了什么? –

回答

2

下面是一个解决方案,它是未经检验的,但我不明白为什么它shouldn't工作

$sum = 0; 
foreach($array as $key => $value) { 
    $sum += $value['quantity'] * $value['price']; 
} 
0

尝试此代码:

$sum=0; 
foreach ($computers as $pc) { 
    $sum += ($pc["price"] * $pc["quantity"]); 
} 
0
$total = 0; 
    for($i = 0; $i < count(Computers); $i++){ 
     $total += (Computers[$i]['price'] * Computers[$i]['quantity']); 
    } 
+0

没有解释downvote? – sadmicrowave

2

这是一种替代方法,其maps的产品,以小计,然后总结这些子总对每个项目的外部阵列。

$totals = array_map(function($group){ 
    return array_sum(array_map(function($product) { 
     return $product['price'] * $product['quantity']; 
    }, $group)); 
}, $array); 

var_dump($totals, array_sum($totals)); 
+0

我认为更好的办法是使用array_reduce – Karolis

+0

@Karolis - 确实有很多方法可以完成这项工作,这将是一个完全可以接受的方式。更好,我不确定。 – salathe