Maison >développement back-end >Problème PHP >statistiques du tableau php différentes valeurs
Dans le développement PHP, les tableaux sont un type de données très couramment utilisé. Nous utilisons généralement des tableaux pour stocker une série de données. Parfois, nous devons compter différentes valeurs dans un tableau, par exemple compter le nombre de fois où différents éléments apparaissent dans un tableau. Cet article va vous montrer comment compter différentes valeurs dans un tableau en utilisant PHP.
PHP a une fonction intégrée array_count_values
, qui peut être utilisée pour compter le nombre d'occurrences de chaque valeur dans un tableau. Le prototype de cette fonction est le suivant : array_count_values
,可以用来统计数组中各个值出现的次数。该函数的原型如下:
array_count_values(array $array): array
该函数需要一个数组作为参数,并返回一个关联数组,其中键是原始数组中的不同值,值是该值在原数组中出现的次数。例如:
$array = array(1, 1, 2, 3, 3, 3); $count = array_count_values($array); print_r($count);
输出:
Array( [1] => 2 [2] => 1 [3] => 3 )
这里原数组是 [1, 1, 2, 3, 3, 3]
,函数返回的关联数组中,键 1
在原数组中出现了 2 次,键 2
在原数组中出现了 1 次,键 3
在原数组中出现了 3 次。
需要注意的是,该函数只对索引数组和关联数组有效,对于其他类型的数组,会返回一个空数组。
除了使用 array_count_values
函数,我们也可以自己编写一个函数来完成类似的功能。以下是一个示例函数:
function array_count_unique(array $array): array { $counts = array(); foreach ($array as $value) { if (isset($counts[$value])) { $counts[$value]++; } else { $counts[$value] = 1; } } return $counts; }
该函数接受一个数组,返回一个关联数组,其中键是原始数组中的不同值,值是该值在原数组中出现的次数。具体实现思路是通过遍历原数组,统计每个值出现的次数,然后以该值为键,出现次数为值,构造结果数组。
我们可以使用以下代码测试该函数:
$array = array(1, 1, 2, 3, 3, 3); $count = array_count_unique($array); print_r($count);
输出:
Array( [1] => 2 [2] => 1 [3] => 3 )
与 array_count_values
函数的结果相同。
需要注意的是,该函数只对索引数组和关联数组有效,对于其他类型的数组,会返回一个空数组。
虽然使用 PHP 内置的 array_count_values
函数和自定义函数都可以完成统计数组中不同值的功能,但它们在性能上可能会有所不同。我们可以通过使用 microtime
函数来测试两种方法的性能。
以下是使用 array_count_values
函数的测试示例:
$array = range(1, 10000); shuffle($array); $start = microtime(true); $count = array_count_values($array); $end = microtime(true); echo 'array_count_values: ' . ($end - $start) . ' seconds';
以下是使用自定义函数的测试示例:
$array = range(1, 10000); shuffle($array); $start = microtime(true); $count = array_count_unique($array); $end = microtime(true); echo 'array_count_unique: ' . ($end - $start) . ' seconds';
两个测试示例的输入相同,都是一个长度为 10000 的随机数组,输出每个方法执行的时间。我们可以多次运行这两个代码片段,比较两个函数的平均运行时间。
在本人测试的环境中,两个方法的时间差异不太明显,通常 array_count_unique
函数略快于 array_count_values
函数,但两者的差异不大。因此,在实际应用中,可以根据需要选择适当的方法。
总结
本文介绍了如何使用 PHP 统计数组中不同的值。我们可以使用 PHP 内置的 array_count_values
rrreee
[1, 1, 2, 3, 3, 3]
, et dans le tableau associatif renvoyé par la fonction, la clé est 1
apparaît 2 fois dans le tableau d'origine, la clé 2
apparaît 1 fois dans le tableau d'origine et la clé 3
apparaît 3 fois dans le tableau d'origine. tableau d'origine. 🎜🎜Il est à noter que cette fonction n'est valable que pour les tableaux d'index et les tableaux associatifs. Pour les autres types de tableaux, un tableau vide sera renvoyé. 🎜array_count_values
, nous pouvons également écrire nous-mêmes une fonction pour compléter des fonctions similaires. Voici un exemple de fonction : 🎜rrreee🎜 Cette fonction prend un tableau et renvoie un tableau associatif où les clés sont les valeurs distinctes dans le tableau d'origine et les valeurs sont le nombre de fois que la valeur apparaît dans le tableau d'origine. L'idée spécifique de l'implémentation est de parcourir le tableau d'origine, de compter le nombre d'occurrences de chaque valeur, puis d'utiliser la valeur comme clé et le nombre d'occurrences comme valeur pour construire le tableau de résultats. 🎜🎜Nous pouvons tester cette fonction en utilisant le code suivant : 🎜rrreee🎜Sortie : 🎜rrreee🎜 Même résultat que la fonction array_count_values
. 🎜🎜Il est à noter que cette fonction n'est valable que pour les tableaux d'index et les tableaux associatifs. Pour les autres types de tableaux, un tableau vide sera renvoyé. 🎜array_count_values
intégrée de PHP et des fonctions personnalisées puisse compléter la fonction de comptage de différentes valeursdans un tableau, elles peut ne pas être aussi efficace en termes de performances, cela peut varier. Nous pouvons tester les performances des deux méthodes en utilisant la fonction microtime
. 🎜🎜Ce qui suit est un exemple de test utilisant la fonction array_count_values
: 🎜rrreee🎜Ce qui suit est un exemple de test utilisant une fonction personnalisée : 🎜rrreee🎜L'entrée des deux exemples de test est la même, les deux sont une chaîne aléatoire d'une longueur de 10 000 Array qui affiche le temps d'exécution de chaque méthode. Nous pouvons exécuter ces deux extraits de code plusieurs fois et comparer la durée d'exécution moyenne des deux fonctions. 🎜🎜Dans l'environnement que j'ai testé, la différence de temps entre les deux méthodes n'est pas évidente. Habituellement, la fonction array_count_unique
est légèrement plus rapide que la fonction array_count_values
, mais la différence entre les deux, ce n'est pas grand. Par conséquent, dans les applications pratiques, la méthode appropriée peut être sélectionnée en fonction des besoins. 🎜🎜Résumé🎜🎜Cet article présente comment utiliser PHP pour compter différentes valeursdans un tableau. Nous pouvons utiliser la fonction array_count_values
intégrée à PHP, ou nous pouvons écrire une fonction nous-mêmes. Les deux méthodes accomplissent des fonctions similaires, mais avec des performances légèrement différentes. Dans les applications pratiques, la méthode appropriée peut être sélectionnée en fonction des besoins. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!