循环遍历1d数组以查找重复的元素


Looping through 1d array to find duplicate elements

我需要循环遍历数组以找到重复的数组元素并回显它们。我需要一个for循环,我知道这一点,但我以前的尝试无法进行比较。

$array = array(3,2,1,3);

您可以使用array_count_values进行以下操作:

$array = array(3, 2, 1, 3);
$counts = array_count_values($array);
foreach ($counts as $key => $count) {
    if ($count > 1) {
        echo sprintf('Key %s is present in the array %d times!', $key, $count);
    }
}

您可以将foreacharray_count_values()结合使用,而不是使用for循环。

$duplicates = array(); 
foreach(array_count_values($arr) as $val => $freq) {
    if($freq > 1) $duplicates[] = $val;
}

组合array_count_values、array_filter、array_keys:

$array = [3, 2, 1, 3];
$duplicates = array_keys(
    array_filter(
        array_count_values($array),
        function ($i) {
            return $i > 1;
        }
    )
);
print_r($duplicates);
// results
Array
(
    [0] => 3
)

希望能有所帮助。

PHP:array_count_values
PHP:array_filter
PHP:array_keys