您好,欢迎访问一九零五行业门户网

php数组重复数据的处理

array(4) { [0] => array(7) { [goodsid] => string(2) 15 [goodsno] => string(13) 9311770592581 [goodsname] => string(37) dcs超级水润泡沫洗面/洁面乳 [price] => string(5) 40.00 [currency] => string(2) 15 [quantity] => int(1) [goods_tax_price] => string(1) 0 } [1] => array(7) { [goodsid] => string(2) 16 [goodsno] => string(13) 9327693000805 [goodsname] => string(21) dcs超级营养精华 [price] => string(5) 10.00 [currency] => string(2) 15 [quantity] => string(1) 1 [goods_tax_price] => string(1) 0 } [2] => array(7) { [goodsid] => string(2) 17 [goodsno] => string(13) 9327693000744 [goodsname] => string(18) dcs超级营养水 [price] => string(5) 30.00 [currency] => string(2) 15 [quantity] => string(1) 1 [goods_tax_price] => string(1) 0 } [3] => array(7) { [goodsid] => string(2) 18 [goodsno] => string(13) 9311770592505 [goodsname] => string(27) dcs集中美白活力面膜 [price] => string(5) 40.00 [currency] => string(2) 15 [quantity] => string(1) 1 [goods_tax_price] => string(1) 0 }[4] => array(7) { [goodsid] => string(2) 18 [goodsno] => string(13) 9311770592505 [goodsname] => string(27) dcs集中美白活力面膜 [price] => string(5) 40.00 [currency] => string(2) 15 [quantity] => string(1) 2 [goods_tax_price] => string(1) 0 }}

把数组里的goodsid重复的商品信息合成一个,个数为quantity的总和(同样商品总和)
结果应为:
array(4) { [0] => array(7) { [goodsid] => string(2) 15 [goodsno] => string(13) 9311770592581 [goodsname] => string(37) dcs超级水润泡沫洗面/洁面乳 [price] => string(5) 40.00 [currency] => string(2) 15 [quantity] => int(1) [goods_tax_price] => string(1) 0 } [1] => array(7) { [goodsid] => string(2) 16 [goodsno] => string(13) 9327693000805 [goodsname] => string(21) dcs超级营养精华 [price] => string(5) 10.00 [currency] => string(2) 15 [quantity] => string(1) 1 [goods_tax_price] => string(1) 0 } [2] => array(7) { [goodsid] => string(2) 17 [goodsno] => string(13) 9327693000744 [goodsname] => string(18) dcs超级营养水 [price] => string(5) 30.00 [currency] => string(2) 15 [quantity] => string(1) 1 [goods_tax_price] => string(1) 0 } [3] => array(7) { [goodsid] => string(2) 18 [goodsno] => string(13) 9311770592505 [goodsname] => string(27) dcs集中美白活力面膜 [price] => string(5) 40.00 [currency] => string(2) 15 [quantity] => string(1) 3 [goods_tax_price] => string(1) 0 }}

回复内容: array(4) { [0] => array(7) { [goodsid] => string(2) 15 [goodsno] => string(13) 9311770592581 [goodsname] => string(37) dcs超级水润泡沫洗面/洁面乳 [price] => string(5) 40.00 [currency] => string(2) 15 [quantity] => int(1) [goods_tax_price] => string(1) 0 } [1] => array(7) { [goodsid] => string(2) 16 [goodsno] => string(13) 9327693000805 [goodsname] => string(21) dcs超级营养精华 [price] => string(5) 10.00 [currency] => string(2) 15 [quantity] => string(1) 1 [goods_tax_price] => string(1) 0 } [2] => array(7) { [goodsid] => string(2) 17 [goodsno] => string(13) 9327693000744 [goodsname] => string(18) dcs超级营养水 [price] => string(5) 30.00 [currency] => string(2) 15 [quantity] => string(1) 1 [goods_tax_price] => string(1) 0 } [3] => array(7) { [goodsid] => string(2) 18 [goodsno] => string(13) 9311770592505 [goodsname] => string(27) dcs集中美白活力面膜 [price] => string(5) 40.00 [currency] => string(2) 15 [quantity] => string(1) 1 [goods_tax_price] => string(1) 0 }[4] => array(7) { [goodsid] => string(2) 18 [goodsno] => string(13) 9311770592505 [goodsname] => string(27) dcs集中美白活力面膜 [price] => string(5) 40.00 [currency] => string(2) 15 [quantity] => string(1) 2 [goods_tax_price] => string(1) 0 }}

把数组里的goodsid重复的商品信息合成一个,个数为quantity的总和(同样商品总和)
结果应为:
array(4) { [0] => array(7) { [goodsid] => string(2) 15 [goodsno] => string(13) 9311770592581 [goodsname] => string(37) dcs超级水润泡沫洗面/洁面乳 [price] => string(5) 40.00 [currency] => string(2) 15 [quantity] => int(1) [goods_tax_price] => string(1) 0 } [1] => array(7) { [goodsid] => string(2) 16 [goodsno] => string(13) 9327693000805 [goodsname] => string(21) dcs超级营养精华 [price] => string(5) 10.00 [currency] => string(2) 15 [quantity] => string(1) 1 [goods_tax_price] => string(1) 0 } [2] => array(7) { [goodsid] => string(2) 17 [goodsno] => string(13) 9327693000744 [goodsname] => string(18) dcs超级营养水 [price] => string(5) 30.00 [currency] => string(2) 15 [quantity] => string(1) 1 [goods_tax_price] => string(1) 0 } [3] => array(7) { [goodsid] => string(2) 18 [goodsno] => string(13) 9311770592505 [goodsname] => string(27) dcs集中美白活力面膜 [price] => string(5) 40.00 [currency] => string(2) 15 [quantity] => string(1) 3 [goods_tax_price] => string(1) 0 }}

废话不多说,直接上代码吧:
$arr = array( '0' => array( 'id' => 1, 'count' =>1, ), '1' => array( 'id' => 2, 'count' =>1, ), '2' => array( 'id' => 4, 'count' =>1, ), '3' => array( 'id' => 2, 'count' =>1, ), );$new = $news = $newss = array();foreach ($arr as $key => $value) { if(!in_array($value['id'], $new)) { $new[] = $value['id']; //$new保存不重复的id值 $news[$key] = $value; //$news保存不重复id的数组值 $newss[$value['id']] = $key; //$newss保存不重复的id的键值 }else { $k = $newss[$value['id']]; //取出重复的id保存的第一个键值 $count = (int)$news[$k]['count']; //取出第一个相同id保存的count值 $news[$k]['count'] = $count+1; //赋值到新的数组 }}var_dump($news);
说一个思路吧,用一个字典
因为goodsid是唯一的, 所以k是goodsid
遍历数组,如果字典里有goodsid则加上对应的数值,没有则把对应的数据放到字典里
二维数组去重,看看这个是否你想要个结果:http://zhidao.baidu.com/link?...
这些数据是从数据库里面查出来的么,如果是那么要去重可以依赖sql查询去重,如果是后来merge的可以找找php版的迭代器类,操作可以简单一点,但这样始终免不了遍历数组的。
这是一个二维数组的去重问题吗?如果是的话,我找找以前的代码,曾经写过这样一个函数。
其它类似信息

推荐信息