在数组中查找重复项

时间:2017-04-28 22:16:36

标签: php arrays

我正在尝试检查我的数组是否有重复的项目。但在我的特殊情况下,我需要使用二维数组。

对于包含10个项目的数组,我设法构建此代码,并且我存储的值如果它们具有重复值,我需要验证的是:$array[0][0]$array[1][0]$array[2][0] ...

$arrayItemCount = 10; //means $array[0][0] to $array[9][0]
    for ($p=0;$p<$arrayItemCount;$p++){
        for ($h=0;$h<$arrayItemCount;$h++){
            if ($array[$p][0]==$array[$h][0]){
                $duplicate++;
            }
        }
    }

在数组方面我不是专家,所以任何帮助都会受到赞赏。

预期结果:

$array[0][0] = 5;
$array[1][0] = 99;
$array[2][0] = 5;

echo $duplicate; //1 or true

1 个答案:

答案 0 :(得分:0)

无论维数多少,都可以使用递归函数查找重复值。

function hasDuplicates(array $array, array &$values = []): bool
{
    foreach ($array as $value) {
        if (is_array($value)) {
            if (hasDuplicates($value, $values)) return true;
        } else {
            if (isset($values[$value])) return true;
            $values[$value] = 1;
        }
    }
    return false;
}

在此示例中,$values是对数组的引用,该数组跟踪到目前为止已经计算过的所有数字。每次遇到非数组值时,函数都会尝试在$values中找到它。如果找到,函数将立即返回true(并递归返回true到最外面的函数调用)。

如果遍历整个数组而没有找到重复数据,则返回false。

$hasDuplicates = hasDuplicates($your_array);
相关问题