2010-09-10 59 views
0

我想用数组构建一个简单的购物车。我需要显示购物车中的每个独特商品以及每个商品的数量。如何计算多维数组内每个唯一数组的数量? PHP

我最初的车阵可能是这样的:

$cart= 

array(

     array(2003,100,"Table") 
     ,array(2003,100,"Table") 
     ,array(2003,100,"Table") 
     ,array(2004,200,"Chair") 
     ,array(2004,200,"Chair") 

    ); 

每个阵列中的第一个值是PRODUCT_ID,那么价格&然后点击产品名称。

我该如何打印每个独特的商品以及每个商品的数量?

在此先感谢。

+2

也许你应该将这些独特地存储在第一位。通过product_id键入每个数组项的数量将更容易管理。我建议你阅读关于像这样的任务更可靠的关联数组(字典)。 – Keyo 2010-09-10 07:50:27

回答

1

你可以简单地遍历数组,并使用产品ID作为关键来算金额:

$amounts = array(); 
foreach ($cart as $item) { 
    if (!isset($amounts[$item[0]])) $amounts[$item[0]] = 0; 
    $amounts[$item[0]]++; 
} 

但是如果你的车只是存储产品ID和金额会更容易些,所以:

array(
    2003 => 3, 
    2004 => 2 
) 

这实际上是上面算法的作用。但是,有了这些,您就可以获得所需的所有信息(产品ID和金额)。

+0

太棒了!你是对的,如果数组存储数量,它会更有意义。 – matt 2010-09-10 08:14:39

2
$new_cart = array(); 

foreach($cart as $product) { 
    if(!isset($new_cart[$product[0]])) { 
     $new_cart[$product[0]] = array('quantity' => 1, 'label' => $product[2], 'price'  => $product[1]); 
    } 
    else { 
     $new_cart[$product[0]]['quantity']++; 
    } 
} 

我强烈建议为此使用关联数组。你的问题是你存储值的方式。尝试使用类似这样的东西:

$cart_items = array(
    2004 => array('quantity' => 3, 'label' => 'Leather Chair', 'price' => 200), 
    2901 => array('quantity' => 1, 'label' => 'Office Desk', 'price' => 1200), 

); 

当用户更新数量或添加现有产品时,只需增加数量即可。

+0

谢谢!这很有意义。我可以立即看到如何使用关联数组更容易。 – matt 2010-09-10 08:15:27

+1

你应该接受答案! – axsuul 2010-09-10 11:16:44