>  기사  >  백엔드 개발  >  这样的二维数组合并并去掉重复值,该如何做

这样的二维数组合并并去掉重复值,该如何做

WBOY
WBOY원래의
2016-06-13 13:45:15771검색

这样的二维数组合并并去掉重复值,该怎么做
这样的二维数组合并并去掉重复值(attr_id,attr_name,attr_value三个字段都相同的则保留一个去除一个)

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
Array
(
    [0] => Array
        (
            [attr_id] => 16950
            [attr_name] => 台式机CPU品牌
            [attr_value] => AMD

        )

    [1] => Array
        (
            [attr_id] => 16951
            [attr_name] => 台式机操作系统
            [attr_value] => Linux

        )

)

Array
(
    [0] => Array
        (
            [attr_id] => 16955
            [attr_name] => 售后服务
            [attr_value] => 一年
        )

)




------解决方案--------------------
function array_multi_unique($ar) {
$ar = array_map('serialize', $ar);
$ar = array_unique($ar);
return array_map('unserialize', $ar);
}

print_r( array_multi_unique($a) );
------解决方案--------------------
在唠叨老大的基础上改改
PHP code


<?php $new = Array
(
    '0' => Array
        (
            'attr_id' => '16950',
            'attr_name' => '台式机CPU品牌',
            'attr_value' => 'AMD',
            'attr_type' => 1,
            'belong' => 'goods_sku'
        ),
    '1' => Array
        (
            'attr_id' => '16951',
            'attr_name' => '台式机操作系统',
            'attr_value' => 'Linux',
            'attr_type' => 2,
            'belong' => 'goods_sku'
        ),
    '2' => Array
        (
            'attr_id' => '16955',
            'attr_name' => '售后服务',
            'attr_value' => '一年',
            'attr_type' => 2,
            'belong' => 'goods_sku'
        ),
    '3' => Array
        (
            'attr_id' => '16950',
            'attr_name' => '台式机CPU品牌',
            'attr_value' => 'AMD',
            'attr_type' => 1,
            'belong' => 'goods'
        )
);

// 老大的基础上改改
function array_multi_unique($ar, $filter=array()) {

    if(!empty($filter)) {
        $_v = array_fill_keys($filter, ' ');
        $_ar = array();
        foreach($ar as $k => $v) {
            $_ar[$k] = array_intersect_key($v, $_v);
        }
    } else {
        $_ar = $ar;
    }

    $_ar = array_map('serialize', $_ar);
    $_ar = array_unique($_ar);
    $_ar = array_map('unserialize', $_ar);

    if(!empty($filter)) {        
        return array_intersect_key($ar, $_ar);
    } else {
        return $_ar;
    }
}

print_r(array_multi_unique($new, array('attr_id', 'attr_name', 'attr_value'))); <div class="clear">
                 
              
              
        
            </div>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.