今天做项目遇到一个问题,需要把goods_id的值一样的这一项删除,注意,不需要全部相同,只要goods_id的值是一样的,那么就去掉重复的。
代码如下:
/**
* 参数:$arr:要去重的数组 $key:不能有重复值的键名
*/
function assoc_unique($arr, $key) {
$tmp_arr = array();
foreach ($arr as $k => $v) {
//搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true
if (in_array($v[$key], $tmp_arr)) {
unset($arr[$k]);
}else{
$tmp_arr[] = $v[$key];
}
}
$arr = array_merge($arr); //array_merge函数对数组重新排序下标
return $arr;
}
下面看效果:
原数组:
Array
(
[0] => Array
(
[goods_id] => 186
[goods_name] => 你找不到不对不对八点半好
[pl_number] => 0
[cat_price] => 0.01
)
[1] => Array
(
[goods_id] => 186
[goods_name] => (活蟹)3公2母精品红膏大闸蟹,一手货源,绝对保肥!
[pl_number] => 0
[cat_price] => 0.01
)
[2] => Array
(
[goods_id] => 186
[goods_name] => 厄瓜多尔南美白虾 鲜活冷冻大海虾2Kg/盒 70-80只 单只12-14cm
[pl_number] => 0
[cat_price] => 120.00
)
[3] => Array
(
[goods_id] => 187
[goods_name] => 时令商品3时令商品3时令商品3时令商品3
[pl_number] => 0
[cat_price] => 120.00
)
[4] => Array
(
[goods_id] => 187
[goods_name] => 时令商品1时令商品1时令商品1时令商品1
[pl_number] => 0
[cat_price] => 150.00
)
[5] => Array
(
[goods_id] => 189
[goods_name] => 时令商品2时令商品2时令商品2时令商品2
[pl_number] => 0
[cat_price] => 150.00
)
)
去重后:
Array
(
[0] => Array
(
[goods_id] => 186
[goods_name] => 你找不到不对不对八点半好
[pl_number] => 0
[cat_price] => 0.01
)
[1] => Array
(
[goods_id] => 187
[goods_name] => 时令商品3时令商品3时令商品3时令商品3
[pl_number] => 0
[cat_price] => 120.00
)
[2] => Array
(
[goods_id] => 189
[goods_name] => 时令商品2时令商品2时令商品2时令商品2
[pl_number] => 0
[cat_price] => 150.00
)
)
我的这个方法是把goods_id的值,只要一样,就会把重复的去掉,只保留第一个。