Heim >Backend-Entwicklung >PHP-Problem >PHP-Array-Statistiken verschiedene Werte

PHP-Array-Statistiken verschiedene Werte

王林
王林Original
2023-05-06 11:35:08443Durchsuche

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.

  1. array_count_values ​​​​Funktion

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 次。

需要注意的是,该函数只对索引数组和关联数组有效,对于其他类型的数组,会返回一个空数组。

  1. 自定义函数

除了使用 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 函数的结果相同。

需要注意的是,该函数只对索引数组和关联数组有效,对于其他类型的数组,会返回一个空数组。

  1. 性能比较

虽然使用 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_valuesrrreee

Diese Funktion verwendet ein Array als Parameter und gibt ein assoziatives Array zurück, wobei die Schlüssel die verschiedenen Werte im ursprünglichen Array sind und der Wert die Häufigkeit angibt, mit der der Wert erscheint im ursprünglichen Array. Zum Beispiel: 🎜rrreee🎜Ausgabe: 🎜rrreee🎜Das ursprüngliche Array hier ist [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. 🎜
    🎜Benutzerdefinierte Funktion🎜🎜🎜Zusätzlich zur Verwendung der Funktion 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. 🎜
      🎜Leistungsvergleich🎜🎜🎜Obwohl die Verwendung der in PHP integrierten 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn