今天做項目遇到一個問題,需要把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的值,只要一樣,就會把重複的去掉,只保留第一個。