我正在尝试编写一个脚本,以便对订单列表进行简单的概述。
我有一个如下所示的数组:
Array(
[0]=>Array(
[0] => name of product 1
[1] => name of options for product
[3] => quantity (an integer)
)
[1]=>Array(
[0] => name of product 2
[1] => name of options for product
[3] => quantity (an integer)
)
etc.
)
我想要做的是检查键[0]和[1]的位置,即具有相同选项的相同产品,并删除重复项。同时,我希望值[3]随被删除的数组中的数字递增。为了简化,我想合并产品和选项匹配的值[3]。我一直在考虑这个问题,但是无法弄清楚如何去做。有什么建议吗?
答案 0 :(得分:3)
您可以遍历数组并使用关联数组来“计算”产品:
$merged = array();
foreach($products as $product) {
$key = $product[0] . $product[1];
if(!array_key_exists($key, $merged)) {
$merged[$key] = $product;
}
else {
$merged[$key][3] += $product[3];
}
}
这里的技巧是将产品的名称和选项连接起来以形成唯一的产品密钥。当然,这要求产品的选项始终处于相同的顺序。
答案 1 :(得分:0)
双循环
<?php for($counter=0;$counter<count($arr)-1;$counter++){ $counter2 = $counter+1; while($counter2<count($arr)) { if( $arr[$counter][0] == $arr[$counter2][0] && $arr[$counter][1] == $arr[$counter2][1] ) { // Same product $arr[$counter][2]+=$arr[$counter2][2]; array_splice($arr, $counter2, 1); } else { $counter2++; } } } ?>