PHP二維數組去重處理

今天做項目遇到一個問題,需要把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] => (活蟹)32母精品紅膏大閘蟹,一手貨源,絕對保肥!
            [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的值,只要一樣,就會把重複的去掉,只保留第一個。

感謝大佬可以欣賞到最後!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章