Heim >Backend-Entwicklung >PHP-Problem >PHP-Array-Statistiken verschiedene Werte
Arrays sind in der PHP-Entwicklung ein sehr häufig verwendeter Datentyp. Normalerweise verwenden wir Arrays, um eine Reihe von Daten zu speichern. Manchmal müssen wir verschiedene Werte in einem Array zählen, beispielsweise um zu zählen, wie oft verschiedene Elemente in einem Array vorkommen. In diesem Artikel erfahren Sie, wie Sie mit PHP verschiedene Werte in einem Array zählen.
PHP verfügt über eine integrierte Funktion array_count_values
, mit der die Anzahl der Vorkommen jedes Werts in einem Array gezählt werden kann. Der Prototyp dieser Funktion lautet wie folgt: 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]
, und im assoziativen Array, das von der Funktion zurückgegeben wird, lautet der Schlüssel 1
erscheint 2 Mal im ursprünglichen Array, der Schlüssel 2
erscheint 1 Mal im ursprünglichen Array und der Schlüssel 3
erscheint 3 Mal im ursprüngliches Array. 🎜🎜Es ist zu beachten, dass diese Funktion nur für Index-Arrays und assoziative Arrays gültig ist. Bei anderen Array-Typen wird ein leeres Array zurückgegeben. 🎜array_count_values
können wir auch selbst eine Funktion schreiben, um ähnliche Funktionen abzuschließen. Hier ist eine Beispielfunktion: 🎜rrreee🎜 Diese Funktion akzeptiert ein Array und gibt ein assoziatives Array zurück, wobei die Schlüssel die unterschiedlichen Werte im ursprünglichen Array sind und die Werte die Häufigkeit angeben, mit der der Wert im ursprünglichen Array erscheint. Die spezifische Implementierungsidee besteht darin, das ursprüngliche Array zu durchlaufen, die Anzahl der Vorkommen jedes Werts zu zählen und dann den Wert als Schlüssel und die Anzahl der Vorkommen als Wert zu verwenden, um das Ergebnisarray zu erstellen. 🎜🎜Wir können diese Funktion mit dem folgenden Code testen: 🎜rrreee🎜Ausgabe: 🎜rrreee🎜 Gleiches Ergebnis wie die Funktion array_count_values
. 🎜🎜Es ist zu beachten, dass diese Funktion nur für Index-Arrays und assoziative Arrays gültig ist. Bei anderen Array-Typen wird ein leeres Array zurückgegeben. 🎜array_count_values
-Funktion und benutzerdefinierter Funktionen die Funktion zum Zählen verschiedener Werte in einem Array vervollständigen kann, können sie Möglicherweise ist die Effizienz hinsichtlich der Leistung unterschiedlich. Wir können die Leistung beider Methoden testen, indem wir die Funktion microtime
verwenden. 🎜🎜Das Folgende ist ein Testbeispiel mit der Funktion array_count_values
: 🎜rrreee🎜Das Folgende ist ein Testbeispiel mit einer benutzerdefinierten Funktion: 🎜rrreee🎜Die Eingabe der beiden Testbeispiele ist gleich, beide sind es ein zufälliger String mit einer Länge von 10000. Array, das die Ausführungszeit jeder Methode ausgibt. Wir können diese beiden Codefragmente mehrmals ausführen und die durchschnittliche Laufzeit der beiden Funktionen vergleichen. 🎜🎜In der von mir getesteten Umgebung ist der Zeitunterschied zwischen den beiden Methoden nicht offensichtlich. Normalerweise ist die Funktion array_count_unique
etwas schneller als die Funktion array_count_values
, aber der Unterschied zwischen zwei ist nicht groß. Daher kann in praktischen Anwendungen die geeignete Methode je nach Bedarf ausgewählt werden. 🎜🎜Zusammenfassung🎜🎜In diesem Artikel wird erläutert, wie Sie mit PHP verschiedene Werte in einem Array zählen. Wir können die in PHP integrierte Funktion array_count_values
verwenden oder selbst eine Funktion schreiben. Beide Methoden erfüllen ähnliche Funktionen, jedoch mit leicht unterschiedlicher Leistung. In praktischen Anwendungen kann je nach Bedarf die geeignete Methode ausgewählt werden. 🎜Das obige ist der detaillierte Inhalt vonPHP-Array-Statistiken verschiedene Werte. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!