Php 数组\唯一/超级\唯一问题
我正在尝试根据以下数组的“duplicate_check”删除重复项。似乎array_unique和super_unique函数都不起作用。我还尝试比较两个相同的数组和一个循环函数中的一个循环,但是由于数组中有上万行,所以时间不够了。有什么帮助吗Php 数组\唯一/超级\唯一问题,php,arrays,array-unique,Php,Arrays,Array Unique,我正在尝试根据以下数组的“duplicate_check”删除重复项。似乎array_unique和super_unique函数都不起作用。我还尝试比较两个相同的数组和一个循环函数中的一个循环,但是由于数组中有上万行,所以时间不够了。有什么帮助吗 [1] => Array ( [a] => abc [b] => 202 [c] => 001 [d] => [e] => G
[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]);
}
}
惰性解决方案(但可能不是针对您的任务)也可以是:
=array_map("unserialize", array_unique(array_map("serialize", $array)));
PHP没有函数
super\u unique
。告诉我们它是什么,从哪里来的?@马里奥我试了第一个,但没有成功。我确实使用了第二个解决方案,其中包含php.net/manual/en/function.array-unique.php中的super_unique函数。它确实删除了一些重复项,但不是我上面提到的那个。您需要更详细地解释源数组的结构。例如,“duplicate\u check”
是否已经是所述数组的一部分,或者是由该super\u unique添加的(显示该super\u unique也会清除问题),这一点尚不清楚。显示上述方法失败的示例。否则,请解释筛选条件。@mario“重复检查”已经是所述数组的一部分。然后,我有$arr=super_unique($arr)。它没有删除我上面提到的重复项。我不确定这是因为值不完全相同。如果你看[2]和[3]。“重复检查”的值相同,但[2]在“d”和“e”中有值。@mario在指定的情况下,删除[2]或[3]是我想要的。那么您的问题是“重复检查”
并没有覆盖所有字段。因此,将a+b+c+d+e
连接在一起的唯一性就是您要过滤的内容?