Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组\唯一/超级\唯一问题_Php_Arrays_Array Unique - Fatal编程技术网

Php 数组\唯一/超级\唯一问题

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

我正在尝试根据以下数组的“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
    )

嗯,我不知道你尝试过的方法(你应该在你的问题中加上这一点)。但您似乎应该使用一个循环来过滤条目:

$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
连接在一起的唯一性就是您要过滤的内容?