In der PHP-Entwicklung müssen wir die Elemente in einem Array häufig zählen, insbesondere wenn das Array ein mehrdimensionales Array ist, ist besonders wichtig, wie er seine Werte zählt. In diesem Artikel wird angezeigt, wie Sie eine benutzerdefinierte PHP -Funktion schreiben, die Wertstatistiken zu mehrdimensionalen Arrays unterstützt.
Ein mehrdimensionales Array ist ein Array, das ein oder mehrere Arrays als Elemente enthält. Zum Beispiel ist ein zweidimensionales Array, jedes Element davon ein Array. Durch Durchqueren von mehrdimensionalen Arrays können wir komplexere Datenstatistiken durchführen.
Angenommen, wir haben ein mehrdimensionales Array wie folgt:
$array = [
['name' => 'John', 'age' => 28, 'city' => 'New York'],
['name' => 'Jane', 'age' => 22, 'city' => 'Los Angeles'],
['name' => 'Mike', 'age' => 28, 'city' => 'Chicago'],
['name' => 'Lucy', 'age' => 22, 'city' => 'New York']
];
Unser Ziel ist es, eine Funktion zu schreiben, die die Häufigkeit zählen kann, die jeder Wert im gesamten mehrdimensionalen Array erscheint. Wir können mehrdimensionale Arrays rekursiv verarbeiten, um die Häufigkeit des Auftretens jedes Elements zu zählen.
Hier sind die PHP -Funktionen, die diese Funktion implementieren:
function countValuesInArray($array) {
$counts = [];
// Durch mehrdimensionale Arrays wiederholen
foreach ($array as $element) {
// Wenn das Element ein Array ist,Rufen Sie dann rekursiv an
if (is_array($element)) {
$counts = array_merge($counts, countValuesInArray($element));
} else {
// Wenn das Element ein Wert ist,Zählen Sie dann die Anzahl der Vorkommen
if (isset($counts[$element])) {
$counts[$element]++;
} else {
$counts[$element] = 1;
}
}
}
return $counts;
}
// Testarray
$array = [
['name' => 'John', 'age' => 28, 'city' => 'New York'],
['name' => 'Jane', 'age' => 22, 'city' => 'Los Angeles'],
['name' => 'Mike', 'age' => 28, 'city' => 'Chicago'],
['name' => 'Lucy', 'age' => 22, 'city' => 'New York']
];
// Aufrufen von Funktionen
$result = countValuesInArray($array);
// Ausgangsergebnis
echo '<pre>';
print_r($result);
echo '</pre>';
Rekursiver Traversal
Die Funktion countvaluesinarray behandelt mehrdimensionale Arrays durch Rekursion. Wenn das Element im Array selbst ein Array ist, ruft sich die Funktion erneut auf, um das Subtarray zu verarbeiten, bis es den innersten Wert erreicht.
Statistische Elementfrequenz <br> Für jedes Element prüft die Funktion, ob sie sich bereits im $ Counts -Array befindet. Wenn es bereits existiert, wird sein Wert um 1 erhöht; Wenn es nicht existiert, wird es auf 1 initialisiert.
Ergebnisse verschmelzen <br> Jedes Mal, wenn wir rekursiv aufrufen, verschmelzen wir die Statistikergebnisse über Array_Merge , um schließlich ein vollständiges Statistikarray zu bilden.
Angenommen, wir führen den obigen Code aus, die Ausgabe wird sein:
Array
(
[John] => 1
[28] => 2
[New York] => 2
[Jane] => 1
[22] => 2
[Los Angeles] => 1
[Mike] => 1
[Chicago] => 1
[Lucy] => 1
)
In vielen PHP -Anwendungen können Array -Daten URLs enthalten, die wir manchmal verarbeiten müssen. Wenn Sie die Domainnamen aller URLs im Array durch m66.net ersetzen möchten, können Sie die obige Funktion geringfügig ändern und die Domänennamen in der URL durch regelmäßige Ausdrücke ersetzen.
Hier ist eine modifizierte Version der Funktion, wobei die URL -Verarbeitung hinzugefügt wurde: