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
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
)
À 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.
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é.
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.
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.