W3docs

Comprendiendo la función PHP "array_count_values"

La función array_count_values en PHP cuenta las ocurrencias de cada valor en un array y devuelve un array asociativo con los resultados.

La función array_count_values() de PHP cuenta cuántas veces aparece cada valor en un array. Devuelve un nuevo array asociativo en el que las claves son los valores distintos del array de entrada y los valores indican cuántas veces apareció cada uno. Esta es la forma más rápida de construir una tabla de frecuencias (un histograma de valores) sin necesidad de escribir un bucle manualmente.

Este capítulo cubre la sintaxis, las reglas sobre qué valores pueden contarse, los errores comunes y recetas prácticas como encontrar el elemento más frecuente.

Sintaxis

array_count_values(array $array): array
ParámetroDescripción
$arrayEl array de entrada cuyos valores se desean contar. Solo se cuentan los valores de tipo int y string.

La función devuelve un array asociativo de pares valor => cantidad. No modifica el array original.

Ejemplo básico

Pasa un array de valores y obtendrás de vuelta cada valor distinto junto con su cantidad:

php— editable, runs on the server

Salida:

Array
(
    [red] => 2
    [green] => 1
    [blue] => 2
    [yellow] => 1
)

"red" y "blue" aparecen dos veces cada uno, mientras que "green" y "yellow" aparecen una sola vez. Las claves del array original se ignoran por completo — solo importan los valores.

Cómo interactúan las claves enteras y string

Dado que las claves de un array en PHP solo pueden ser enteros o strings, array_count_values() únicamente cuenta valores de tipo int y string. Hay una consecuencia sutil: un string numérico como "1" y el entero 1 se tratan como la misma clave, por lo que se cuentan juntos.

<?php

$mixed = array(1, "1", 1, "hello", "hello");
print_r(array_count_values($mixed));

?>

Salida:

Array
(
    [1] => 3
    [hello] => 2
)

El entero 1 y el string "1" se colapsan en una sola clave 1 con un recuento de 3. Esto refleja la forma en que PHP normaliza las claves de array en todos los contextos.

Valores que no pueden contarse

Cualquier valor que no sea int o stringnull, booleanos, flotantes, arrays u objects — no puede usarse como clave. PHP lo omite y emite una advertencia en lugar de contarlo:

<?php

$values = array("a", "b", null, 3.5, "a");
print_r(@array_count_values($values));

?>

Salida:

Array
(
    [a] => 2
    [b] => 1
)

Solo se cuentan los valores string; null y el flotante 3.5 se descartan (la llamada real genera advertencias "Can only count string and integer values" — el @ anterior es solo para mantener la salida limpia en el ejemplo). Convierte o filtra tus datos primero si necesitas contar otros tipos.

Receta práctica: encontrar el valor más frecuente

Una tabla de frecuencias facilita encontrar la moda (el elemento más común). Ordena los recuentos en orden descendente y lee la primera clave:

<?php

$votes = array("yes", "no", "yes", "yes", "no", "maybe");
$counts = array_count_values($votes);
arsort($counts);            // sort by count, highest first, keeping keys
$winner = array_key_first($counts);

echo "Winner: $winner ({$counts[$winner]} votes)";

?>

Salida:

Winner: yes (3 votes)

También puedes pasar el resultado directamente a array_sum() para confirmar el total, o a max() para obtener el recuento más alto.

Conteo de palabras en un string

Un caso de uso común es construir un mapa de frecuencia de palabras. Divide el string en palabras con explode() y luego cuenta:

<?php

$text = "the cat sat on the mat the cat ran";
$words = explode(" ", $text);
print_r(array_count_values($words));

?>

Salida:

Array
(
    [the] => 3
    [cat] => 2
    [sat] => 1
    [on] => 1
    [mat] => 1
    [ran] => 1
)

Cuándo usarla

Recurre a array_count_values() siempre que necesites un histograma de valores: contar votos, encontrar duplicados, construir nubes de etiquetas o detectar las entradas más o menos comunes. Es más rápida y clara que un bucle foreach manual con comprobaciones isset(), y elimina una fuente frecuente de errores de conteo.

Funciones relacionadas

  • array_unique() — elimina valores duplicados (cuando solo importa qué valores existen, no cuántas veces aparecen).
  • array_keys() — extrae únicamente los valores distintos una vez que son claves.
  • array_sum() — suma los recuentos.
  • arsort() — ordena la tabla de frecuencias resultante por recuento.

Práctica

Práctica
¿Cuál es la función de array_count_values() en PHP?
¿Cuál es la función de array_count_values() en PHP?
Was this page helpful?