我正在尝试检查我的数组是否有重复的项目。但在我的特殊情况下,我需要使用二维数组。
对于包含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
答案 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);