W3docs

Comprendere la funzione PHP "array_count_values"

La funzione array_count_values in PHP conta le occorrenze di ogni valore in un array e restituisce un array associativo con i relativi conteggi.

La funzione PHP array_count_values() conta quante volte ogni valore appare in un array. Restituisce un nuovo array associativo in cui le chiavi sono i valori distinti dell'array di input e i valori indicano quante volte ciascuno è comparso. È il modo più rapido per costruire una tabella delle frequenze (un istogramma dei valori) senza scrivere un ciclo manualmente.

Questo capitolo tratta la sintassi, le regole sui valori che possono essere contati, le insidie più comuni e ricette pratiche come trovare l'elemento più frequente.

Sintassi

array_count_values(array $array): array
ParametroDescrizione
$arrayL'array di input di cui si vogliono contare i valori. Vengono contati solo i valori int e string.

La funzione restituisce un array associativo di coppie valore => conteggio. Non modifica l'array originale.

Esempio di base

Passa un array di valori e ottieni ogni valore distinto abbinato al suo conteggio:

php— editable, runs on the server

Output:

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

"red" e "blue" compaiono entrambi due volte, mentre "green" e "yellow" compaiono una volta sola. Le chiavi dell'array originale vengono ignorate completamente — contano solo i valori.

Come interagiscono le chiavi intere e string

Poiché le chiavi degli array PHP possono essere solo interi o string, array_count_values() conta solo valori int e string. C'è una sottile conseguenza: una string numerica come "1" e l'intero 1 vengono trattati come la stessa chiave, quindi vengono contati insieme.

<?php

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

?>

Output:

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

L'intero 1 e la string "1" collassano in un'unica chiave 1 con un conteggio di 3. Questo rispecchia il modo in cui PHP normalizza le chiavi degli array ovunque.

Valori che non possono essere contati

Qualsiasi valore che non sia un int o una stringnull, boolean, float, array od object — non può essere usato come chiave. PHP lo salta ed emette un avviso invece di contarlo:

<?php

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

?>

Output:

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

Vengono contati solo i valori string; null e il float 3.5 vengono scartati (la chiamata reale genera avvisi "Can only count string and integer values" — il @ è usato qui solo per mantenere l'output pulito per la demo). Esegui il cast o filtra i tuoi dati prima se hai bisogno di contare altri tipi.

Ricetta pratica: trovare il valore più frequente

Una tabella delle frequenze rende banale trovare la moda (l'elemento più comune). Ordina i conteggi in ordine decrescente e leggi la prima chiave:

<?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)";

?>

Output:

Winner: yes (3 votes)

Puoi anche passare il risultato direttamente a array_sum() per verificare il totale, oppure a max() per ottenere il conteggio più alto.

Contare le parole in una string

Un caso d'uso comune è costruire una mappa della frequenza delle parole. Dividi la string in parole con explode(), poi conta:

<?php

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

?>

Output:

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

Quando usarla

Ricorri a array_count_values() ogni volta che hai bisogno di un istogramma dei valori: conteggio di voti, ricerca di duplicati, costruzione di tag cloud o individuazione degli elementi più/meno comuni. È più veloce e più chiara di un ciclo foreach manuale con controlli isset(), ed elimina una frequente fonte di bug off-by-one.

Funzioni correlate

  • array_unique() — rimuove i valori duplicati (quando ti interessa solo quali valori esistono, non quante volte).
  • array_keys() — estrae solo i valori distinti una volta che sono diventati chiavi.
  • array_sum() — somma i conteggi.
  • arsort() — ordina la tabella delle frequenze risultante per conteggio.

Esercitazione

Pratica
Qual è la funzione di array_count_values() in PHP?
Qual è la funzione di array_count_values() in PHP?
Was this page helpful?