Contar elementos repetidos en un array
Esta funcion devuelve un array con todos los elementos repetidos dentro de un array especifico, y la cantidad de veces que cada elemento aparecio
La definicion es la siguiente
function repeatedElements($array) { $repeated = array(); foreach( (array)$array as $value ) { $inArray = false; foreach( $repeated as $i => $rItem ) { if( $rItem['value'] === $value ) { $inArray = true; ++$repeated[$i]['count']; } } if( false === $inArray ) { $i = count($repeated); $repeated[$i] = array(); $repeated[$i]['value'] = $value; $repeated[$i]['count'] = 1; } } foreach( $repeated as $i => $rItem ) { if($rItem['count'] === 1) { unset($repeated[$i]); } } sort($repeated); return $repeated; }
Y la implementacion seria la siguiente por ejemplo
$arrayParaChequear = array("hola", "chau", "chau", "hola", 1, 5, 3, 1); $repetidos = repeatedElements($arrayParaChequear); print_r($repetidos);
Y la salida del ejemplo anterior seria la siguiente
Array
(
[0] => Array
(
[value] => chau
[count] => 2
)
[1] => Array
(
[value] => hola
[count] => 2
)
[2] => Array
(
[value] => 1
[count] => 2
)
)Como veran, es un array, cuyas claves son
‘value’, que contiene el valor que se repitio
‘count’ la cantidad de veces que aparecio
Espero que les sirva!
Saludos!
Lo malo de tu funcion es que no funciona con arrays bidimensionales.