天天看点

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] => (活蟹)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的值,只要一样,就会把重复的去掉,只保留第一个。

感谢大佬可以欣赏到最后!!!

继续阅读