我需要循环遍历数组以找到重复的数组元素并回显它们。我需要一个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);
}
}
您可以将foreach
与array_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