Position actuelle: Accueil> Derniers articles> Le paramètre array_count_values ​​() doit-il être un tableau unidimensionnel?

Le paramètre array_count_values ​​() doit-il être un tableau unidimensionnel?

M66 2025-06-07

Dans PHP, la fonction array_count_values ​​() est une fonction très utile qui compte le nombre d'occurrences de chaque valeur dans un tableau. La fonction est définie comme suit:

 array_count_values(array $array): array

1. Introduction à array_count_values ​​()

La fonction principale de la fonction array_count_values ​​() est de renvoyer un tableau associatif contenant toutes les valeurs du tableau d'origine et le nombre de fois que chaque valeur apparaît. Par exemple:

 $array = array(1, 2, 2, 3, 3, 3, 4);
$result = array_count_values($array);
print_r($result);

La sortie sera:

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

2. Array_count_values ​​() peut-il être utilisé uniquement pour les tableaux unidimensionnels?

À proprement parler, la fonction array_count_values ​​() est conçue pour un tableau unidimensionnel, il irara donc sur des éléments dans un tableau unidimensionnel et comptera le nombre de fois que chaque valeur apparaît. Si le tableau unidimensionnel est transmis, il peut fonctionner comme prévu et renvoyer un résultat de décompte.

Cependant, lorsque nous passons dans un tableau multidimensionnel, Array_Count_Values ​​() ne considérera que les éléments les plus extérieurs (première couche) du tableau et ignorent le réseau imbriqué dans la couche intérieure. Si le tableau contient des tableaux multidimensionnels ou d'autres structures de données complexes, array_count_values ​​() ne le traitera pas récursivement.

3. Que se passe-t-il si vous passez dans un tableau multidimensionnel?

Regardons un exemple:

 $array = array(
    'a' => 1,
    'b' => 2,
    'c' => array(1, 2),
    'd' => 3,
);

$result = array_count_values($array);
print_r($result);

La sortie sera:

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

Comme vous pouvez le voir, array_count_values ​​() ne compte que l'élément le plus extérieur et ignore la valeur du tableau de la clé c . Si nous voulons compter toutes les valeurs dans un tableau multidimensionnel, nous devons d'abord "aplatir", par exemple, utiliser array_walk_recursive () ou le gérer via la récursivité.

4. Résolvez le problème de comptage des tableaux multidimensionnels

Si vous devez compter le nombre d'occurrences de chaque valeur dans un tableau multidimensionnel, vous pouvez utiliser une méthode récursive pour aplatir le tableau. Voici un exemple:

 function flattenArray($array) {
    $result = [];
    array_walk_recursive($array, function($value) use (&$result) {
        $result[] = $value;
    });
    return $result;
}

$array = array(
    'a' => 1,
    'b' => 2,
    'c' => array(1, 2),
    'd' => 3,
);

$flattenedArray = flattenArray($array);
$result = array_count_values($flattenedArray);
print_r($result);

La sortie sera:

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

En mode récursif, nous aplatissons le tableau multidimensionnel, puis utilisons Array_count_values ​​() pour compter. Cela vous permet de compter toutes les valeurs dans un tableau multidimensionnel.

Résumer

La fonction array_count_values ​​() ne peut être utilisée que pour les tableaux unidimensionnels. Si un tableau multidimensionnel est passé, la fonction ne comptera que les valeurs de l'élément le plus externe et ne comptera pas les valeurs dans le tableau imbriqué. Pour gérer les tableaux multidimensionnels, vous pouvez les aplatir d'abord par récursivement ou autrement, puis utiliser array_count_values ​​() pour compter le nombre d'occurrences de chaque valeur.