【问题标题】:How do I count the number of each unique array inside a multidimentional array? PHP如何计算多维数组中每个唯一数组的数量? PHP
【发布时间】:2010-09-10 07:45:36
【问题描述】:

我想使用数组构建一个简单的购物车。我需要在购物车中显示每件独特的商品以及每件商品的数量。

我的初始购物车数组可能如下所示:

$cart=

array(

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

      );

每个数组中的第一个值是 product_id,然后是价格,然后是产品名称。

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

提前致谢。

【问题讨论】:

  • 也许你应该首先存储这些唯一的。一个以 product_id 为键的数组,每个数组项都有一个数量,这样管理起来会容易得多。我建议您阅读关联数组(字典),这对于此类任务更可靠。

标签: php arrays multidimensional-array


【解决方案1】:
$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),

);

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

【讨论】:

  • 谢谢!这很有意义。我可以立即看到使用关联数组会更容易。
【解决方案2】:

您可以简单地迭代数组并使用产品 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 和数量)。

【讨论】:

  • 太棒了!没错,如果数组存储数量确实更有意义。
猜你喜欢
  • 1970-01-01
  • 2023-02-06
  • 2019-04-05
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
  • 2020-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多