質問

次の配列の「Duplicate_Check」に基づいて複製を削除しようとしています。 Array_uniqueもSuper_unique関数も機能していないようです。また、2つの同一の配列をループ関数内のループと比較しようとしましたが、配列に数万回の線があるため、時間がなくなります。何か助けがありますか?

[1] => Array
    (
        [a] => abc
        [b] => 202
        [c] => 001
        [d] => 
        [e] => Graphic Commun
        [duplicate_check] => abc202001
    )

[2] => Array
    (
        [a] => abc
        [b] => 211
        [c] => 001
        [d] => Bard
        [e] => CAD Fundamentals
        [duplicate_check] => abc211001
    )
 [3] => Array
    (
        [a] => abc
        [b] => 211
        [c] => 001
        [d] => 
        [e] => 
        [duplicate_check] => abc211001
    )
役に立ちましたか?

解決

まあ、私はあなたの試みられたアプローチについて知りません(あなたはあなたの質問にそれを追加する必要があります)。ただし、ループを使用してエントリをフィルタリングする必要があるようです。

$found = array();
foreach ($array as $i=>$row) {

    $check = "$row[a],$row[b],$row[c]";
    //$check = $row["duplicate_check"];

    if (@$found[$check]++) {
        unset($array[$i]);
    }
}

怠zyな解決策(おそらくあなたの仕事ではない)も次のとおりです。

=array_map("unserialize", array_unique(array_map("serialize", $array)));
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top