如何处理重复字段组并按公共字段键组织 - PHP / Array

时间:2011-07-21 01:59:41

标签: php javascript

想要模仿这个网站上发生了什么,你可以添加多个字段组:当你点击“添加另一张卡片”时,它会复制该字段 - 我已经用jquery和clone()覆盖了它。但是,如果您输入两张金额相同的礼品卡,则下一步他们会将这些礼品卡的数量合并为一组。所以这是我面临的一个场景,以及我希望看到的输出:

用户输入:

Field Group 1 -- Amount: $100 Quantity: 1
Field Group 2 -- Amount: $75 Quantity: 2
Field Group 3 -- Amount: $100 Quantity: 1

下一页的所需输出:

$100 Gift Card Group: 2
$75 Gift Card Group: 2

我一直在寻找不同的方法,但找不到任何东西,请帮助!!

1 个答案:

答案 0 :(得分:0)

对于输入,我会使用像denomination [],quantity []这样的名称,因为我们正在处理数组。在下一页上,在$ _POST上执行print_r(),然后你可以执行foreach()循环来组合相同面额的数量。

现在,假设$ foo是我们的(清理过的)$ _POST。 请执行预处理循环以清理输入;例如根据需要丢弃无效面额/数量。

一旦完成,我们最终得到$ foo,如:

<?php
// cleaned up $_POST
$foo = array(
    'denomination' => array(100, 75, 100),
    'quantity' => array(1, 2, 1),
);

$bar = array();
foreach ($foo['denomination'] as $d => $denomination) {
    if (array_key_exists($denomination, $bar)) { // denomination exists
       $bar[$denomination] += $foo['quantity'][$d];
    } else { // new denomination
       $bar[$denomination] = $foo['quantity'][$d];
    }
}
print_r($bar); die; // debug
?>

输出结果为:

Array(
    [100] => 2,
    [75] => 2
)