Estoy tratando de lograr verificar si mi matriz tiene elementos duplicados. Pero en mi caso especial, necesito usar una matriz bidimensional.
Para una matriz que tiene 10 elementos, logré crear este código y estoy almacenando valores que necesito validar si tienen un valor duplicado o no: $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++; } } }No soy un experto cuando se trata de matrices, por lo que agradecería cualquier ayuda.
Resultado Esperado:
$array[0][0] = 5; $array[1][0] = 99; $array[2][0] = 5; echo $duplicate; //1 or trueSe puede usar una función recursiva para encontrar valores duplicados independientemente del número de dimensiones.
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; } En este ejemplo, $values es una referencia a una matriz que realiza un seguimiento de todos los números que se han evaluado hasta el momento. Cada vez que se encuentre un valor que no sea de matriz, la función intentará encontrarlo en $values . Si se encuentra, la función devolverá inmediatamente verdadero (y recursivamente devolverá verdadero a la llamada de función más externa).
Si se recorre toda la matriz sin encontrar un duplicado, devolverá falso.
$hasDuplicates = hasDuplicates($your_array);