2014-06-17 20 views
0

我有这样的阵列,我想知道我怎么能:如何计算由它们的发生和数量值在多维数组的元素在PHP

  1. 总数量如此finaly我只接收独特产品的ID与他们qty- S,例如:

产物805 - 1片
产品1118 - 2 + 3 + 4 =条9条

array(2){ 
    ["product"]=> array(4){  
     [0]=> string(3) "805"  
     [1]=> string(4) "1118"  
     [2]=> string(4) "1118"  
     [3]=> string(4) "1118"  
    }  
    ["qty"]=> array(4) {  
     [0]=> string(1) "1"   
     [1]=> string(1) "2"  
     [2]=> string(1) "3"  
     [3]=> string(1) "4"  
    }  
}  

谢谢你在前进,

+0

使用[的foreach(HTTP://ch2.php。 net/manual/en/control-structures.foreach.php) – TiMESPLiNTER

+0

你是从数据库中获得这个数组吗?否则,我建议你让MySQL(或者你使用的任何数据库引擎)用适当的查询来解决它。 – Amjo

+0

不,这来自后 – thecore7

回答

1
$productQuantities = array(); 
$products = array("805","1118","1118","1118"); 
$quantities = array(1,2,3,4); 
foreach($products AS $key=>$productId){ 
    $quantity = (int) $quantities[$key]; 
    if(isset($productQuantities[$productId])){ 
     $productQuantities[$productId] += $quantity; 
    } else { 
     $productQuantities[$productId] = $quantity; 
    } 
} 

var_dump($productQuantities); 
+0

scragar我在这个$ productQuantities = [];为什么这是 – thecore7

+0

这将是你的PHP版本,我做了一个编辑。 – scragar

+0

好人! :) 谢谢 ! – thecore7

0

你可以试试这个:

$zipped=array_map(
    null, 
    $your_array['product'], 
    $your_array['qty'] 
); 

$compact = array(); 

foreach ($zipped as $k => $v){ 

    if(!array_key_exists($v[0], $compact)){ 
     $compact[$v[0]] = $v[1]; 
    } else { 
     $compact[$v[0]] += $v[1]; 
    } 
} 

这时你会发现你在$紧凑

+0

简单说一下,为了同样的目的'array_key_exists'大约比'isset'慢三倍,唯一能够通过isset使用array_key_exists的地方就是值可以为null的地方(在这种情况下永远不可能)。 – scragar

相关问题