循环通过1d数组来查找重复元素

时间:2015-10-30 16:38:58

标签: php arrays

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

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

3 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

结合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