我正在尝试删除基于'duplicate_check'的重复项以获取以下数组。似乎array_unique和super_unique函数都不起作用。我还尝试将两个相同的数组与一个循环函数内的循环进行比较,但由于数组中有数万行,所以它会耗尽时间。有什么帮助吗?
[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
)
答案 0 :(得分:0)
好吧,我不知道你尝试过的方法(你应该把它添加到你的问题中)。但似乎你应该只使用一个循环来过滤条目:
$found = array();
foreach ($array as $i=>$row) {
$check = "$row[a],$row[b],$row[c]";
//$check = $row["duplicate_check"];
if (@$found[$check]++) {
unset($array[$i]);
}
}
一个懒惰的解决方案(但可能不适合你的任务)也可能是:
=array_map("unserialize", array_unique(array_map("serialize", $array)));