ホームページ  >  記事  >  バックエンド開発  >  このような 2 次元配列を結合し、重複する値を削除するにはどうすればよいでしょうか?

このような 2 次元配列を結合し、重複する値を削除するにはどうすればよいでしょうか?

WBOY
WBOYオリジナル
2016-06-13 13:45:15741ブラウズ

このような 2 次元配列から重複する値をマージして削除する方法
このような 2 次元配列から重複する値をマージして削除します (attr_id、attr_name、attr_value の 3 つのフィールドが同じ場合は、1 つを保持します) 1 つ削除します)

PHP コード
<!--

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 コード


<?php

$new = 配列
(
    '0' => 配列
        (
            'attr_id' => '16950',
            'attr_name' => 'デスクトップ CPU ブランド',
            'attr_value' => 'AMD',
            'attr_type' => 1、
            '所属' => 'グッズスク'
        )、
    '1' => 配列
        (
            'attr_id' => '16951',
            'attr_name' => 'デスクトップ オペレーティング システム',
            'attr_value' => 'Linux',
            'attr_type' => 2、
            '所属' => 'グッズスク'
        )、
    '2' => 配列
        (
            'attr_id' => '16955',
            'attr_name' => 'アフターサービス',
            'attr_value' => '1 年',
            'attr_type' => 2、
            '所属' => 'グッズスク'
        )、
    '3' => 配列
        (
            'attr_id' => '16950',
            'attr_name' => 'デスクトップ CPU ブランド',
            'attr_value' => 'AMD',
            'attr_type' => 1、
            「所属」 => 「商品」
        )
);

// ボスに基づいて変更します
関数 array_multi_unique($ar, $filter=array()) {

    if(!empty($filter)) {
        $_v = array_fill_keys($filter, ' ');
        $_ar = 配列();
        foreach($ar as $k => $v) {
            $_ar[$k] = array_intersect_key($v, $_v);
        }
    } それ以外 {
        $_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);
    } それ以外 {
        $_ar を返します。
    }
}

print_r(array_multi_unique($new, array('attr_id', 'attr_name', 'attr_value')));
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。