Experimentando la vida
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!
| Imprimir artículo | Este artículo fue publicado por Cristián el 31 diciembre 2009 a las 15:04, y está archivado en Recursos, php. Sigue las respuestas a esta entrada a través de RSS 2.0. Puedes dejar un comentario o enviar un trackback desde tu propio sitio. |
hace 4 meses
Lo malo de tu funcion es que no funciona con arrays bidimensionales.
hace 4 meses
Hola @Xander, gracias por visitar el blog. Asi es, solo funciona en vectores. Pero bueno, podrias aplicarselo a un array multidimencional usando alguna de las funciones de php, como array_walk_recursive, u otras que te pertmitan recorrer cada una de las dimenciones del array, recolectando los datos que necesites… No se, se me ocurre.