销售点系统

时间:2015-07-06 18:37:35

标签: javascript php mysql arrays algorithm

我正在为客户开发基于网络的销售点系统。该系统即将完成,但我遇到了一些小问题。

订单商品存储在一个数组中,该数组存储在会话变量中,如下所示:

[items] => Array
    (
        [0] => Array
            (
                [id] => 15
            )

        [2] => Array
            (
                [id] => 16
            )

        [3] => Array
            (
                [id] => 15
            )

        [4] => Array
            (
                [id] => 16
            )

    )

此代码显示项目:

注意: 对于$ items变量中的每个ID,我在数据库中进行查找以提取有关该项目的附加信息。

  foreach($items as $item) {
    $cc++;
    $id = $item['id'];
    $item_db = $db->query("SELECT * FROM inventory WHERE id='$id' LIMIT 1")->fetch_array();
    $subtotal += $item_db['price'];

    $quantity = 1;

    if(!empty($item_db['name'])) {
    ?>
    <tr style="visibility: hidden">
    <td> <a href="?deleteItem=<?=$cc?>" style="color:#000"><i class="fa fa-trash"></i></a> </td>
    <td> <?=$item_db['name']?> </td>
    <td> <?=$quantity?> </td>
    <td> <?=$currency?><?=round($item_db['price'],2)?> </td>
    </tr>
    <?
    }
    }
    ?>

如何对项目进行分组,而不是多次显示相同的项目,数量为1,对条目进行分组并显示所有条目的总数量(相同)?

例如,而不是:

Laptop 1
Laptop 1

我想要显示:

Laptop 2

1 个答案:

答案 0 :(得分:1)

  • 首先创建一个数组来保存计数ID的结果。
  • 然后遍历项目,每个数组获取子数组ID的值。
    • 如果计数器数组没有该ID作为键,请添加id作为键和值1。
    • 如果计数器数组确实具有该ID作为键,则使用1增加该id的值。

现在您将产品ID作为键,产品数量为值。