array_unique/super_uniqueの問題
-
27-10-2019 - |
質問
次の配列の「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)));
所属していません StackOverflow