Dans le développement de PHP, nous devons souvent compter les éléments dans un tableau, en particulier lorsque le tableau est un tableau multidimensionnel, comment compter ses valeurs est particulièrement important. Cet article vous montrera comment rédiger une fonction PHP personnalisée qui prend en charge les statistiques de valeur sur les tableaux multidimensionnels.
Un tableau multidimensionnel est un tableau contenant un ou plusieurs tableaux comme éléments. Par exemple, un tableau bidimensionnel, chaque élément de celui-ci est un tableau. En traversant des tableaux multidimensionnels, nous pouvons effectuer des statistiques de données plus complexes.
Par exemple, supposons que nous ayons un tableau multidimensionnel comme suit:
$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']
];
Notre objectif est d'écrire une fonction qui peut compter le nombre de fois que chaque valeur apparaît dans l'ensemble du tableau multidimensionnel. Nous pouvons traiter des tableaux multidimensionnels récursivement pour compter la fréquence d'occurrence de chaque élément.
Voici les fonctions PHP qui implémentent cette fonction:
function countValuesInArray($array) {
$counts = [];
// Itérer à travers des tableaux multidimensionnels
foreach ($array as $element) {
// Si l'élément est un tableau,Puis appelez récursivement
if (is_array($element)) {
$counts = array_merge($counts, countValuesInArray($element));
} else {
// Si l'élément est une valeur,Puis comptez le nombre d'occurrences
if (isset($counts[$element])) {
$counts[$element]++;
} else {
$counts[$element] = 1;
}
}
}
return $counts;
}
// Essai
$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']
];
// Fonctions d'appel
$result = countValuesInArray($array);
// Résultat de sortie
echo '<pre>';
print_r($result);
echo '</pre>';
Traversée récursive
La fonction CountValuesInarray gère les tableaux multidimensionnels par la récursivité. Si l'élément du tableau lui-même est un tableau, la fonction s'appelle à nouveau pour traiter le sous-réseau jusqu'à ce qu'il atteigne la valeur la plus intérieure.
Fréquence des éléments statistiques <br> Pour chaque élément, la fonction vérifie si elle se trouve déjà dans le tableau Nating $ . S'il existe déjà, sa valeur est augmentée de 1; S'il n'existe pas, il est initialisé à 1.
Fusionner les résultats <br> Chaque fois que nous appelons récursivement, nous fusions les résultats des statistiques via array_merge pour enfin former un tableau de statistiques complet.
Supposons que nous exécutions le code ci-dessus, la sortie sera:
Array
(
[John] => 1
[28] => 2
[New York] => 2
[Jane] => 1
[22] => 2
[Los Angeles] => 1
[Mike] => 1
[Chicago] => 1
[Lucy] => 1
)
Dans de nombreuses applications PHP, les données de tableau peuvent contenir des URL, que nous devons parfois traiter. Si vous souhaitez remplacer les noms de domaine de toutes les URL du tableau par m66.net , vous pouvez modifier légèrement la fonction ci-dessus et remplacer les noms de domaine dans l'URL par des expressions régulières.
Voici une version modifiée de la fonction, avec traitement d'URL ajouté: