Dans PHP, Max () et Array_Filter () sont des fonctions communes, et elles ont chacune des fonctions et des scénarios d'application différentes. La fonction max () renvoie la valeur maximale dans le tableau, tandis que le Array_Filter () est utilisé pour filtrer le tableau en fonction des conditions spécifiées. L'utilisation de ces deux fonctions en combinaison peut implémenter des fonctions plus complexes. Cependant, lors de l'utilisation de ces deux fonctions, il existe des points d'utilisation et des points d'attention avancés qui méritent une discussion plus approfondie.
fonction max ()
La fonction max () renvoie la valeur maximale dans le tableau. Si le tableau est vide, false est renvoyé. Il peut traiter des tableaux de types numériques, ou comparer les tableaux de types complexes en fonction des fonctions de comparaison spécifiées.
$numbers = [1, 3, 2, 5, 4];
$max_value = max($numbers);
echo $max_value; // Sortir 5
fonction array_filter ()
Array_Filter () est utilisé pour filtrer les éléments du tableau et conserver les éléments qui remplissent les conditions spécifiées. Par défaut, il supprime les éléments avec une valeur de faux (y compris 0 , null , false , "" etc.). En transmettant une fonction de rappel, nous pouvons définir les conditions de filtre de manière plus flexible.
$numbers = [1, 2, 3, 4, 5];
$even_numbers = array_filter($numbers, function($num) {
return $num % 2 === 0;
});
print_r($even_numbers); // Sortir [2, 4]
Supposons que nous ayons un tableau de nombres et que nous voulions trouver la valeur maximale dans un tableau qui répond à une condition spécifique. À l'heure actuelle, vous pouvez utiliser max () et array_filter () pour y parvenir. Par exemple, supposons que nous ayons un tableau contenant plusieurs entiers, nous devons découvrir la valeur maximale supérieure à 2:
$numbers = [1, 2, 3, 4, 5];
$filtered_numbers = array_filter($numbers, function($num) {
return $num > 2;
});
$max_value = max($filtered_numbers);
echo $max_value; // Sortir 5
Dans cet exemple, Array_Filter () filtrera d'abord tous les nombres supérieurs à 2, puis Max () trouvera la valeur maximale dans le tableau filtré.
Dans les applications pratiques, nous pouvons parfois avoir besoin de filtrer les tableaux en fonction de certaines ressources externes (telles que les données obtenues via les URL). Pour le moment, nous pouvons combiner array_filter () et max () pour y parvenir. Par exemple, supposons que nous ayons une liste d'URL, nous devons filtrer les URL valides et trouver l'accès le plus rapide (ou le temps de réponse le plus court).
Supposons que nous ayons un ensemble d'URL et renvoyons le temps de réponse de chaque URL via l'API (ce processus peut être simulé). Tout d'abord, utilisez array_filter () pour filtrer les URL valides, puis utilisez max () pour trouver l'URL avec le temps de réponse le plus rapide:
$urls = [
'http://gitbox.net/1' => 100, // Temps de réponse 100ms
'http://gitbox.net/2' => 200, // Temps de réponse 200ms
'http://gitbox.net/3' => 50, // Temps de réponse 50ms
];
$filtered_urls = array_filter($urls, function($time) {
return $time < 150; // 过滤出Temps de réponse小于150msdeURL
});
$fastest_url = array_search(max($filtered_urls), $filtered_urls);
echo "Temps de réponse最快deURLOui: " . $fastest_url; // Sortir: http://gitbox.net/3
Dans cet exemple, nous filtrons les URL avec un temps de réponse inférieur à 150 ms via array_filter () , puis utilisons max () pour découvrir l'URL avec le temps de réponse le plus rapide.
Lorsque vous utilisez Max () , si le tableau filtré est vide, Max () renvoie false , ce qui peut provoquer une erreur ou une exception. Par conséquent, avant d'utiliser Max () , il est préférable de déterminer si le réseau filtré est vide.
$filtered_numbers = array_filter([1, 2, 3, 4], function($num) {
return $num > 10; // Supposons que tous les nombres sont plus petits que10
});
if (!empty($filtered_numbers)) {
$max_value = max($filtered_numbers);
echo $max_value;
} else {
echo "没有符合条件de值";
}
Max () utilise la règle de taille de comparaison par défaut pour renvoyer la valeur maximale. Si vous devez personnaliser la comparaison des éléments de tableau (par exemple, les éléments du tableau sont des objets), vous pouvez fournir une fonction de rappel pour ajuster les règles de comparaison. Array_Filter () prend également en charge les fonctions de rappel, qui peuvent filtrer les éléments en fonction des conditions personnalisées.
$items = [
['name' => 'item1', 'price' => 30],
['name' => 'item2', 'price' => 20],
['name' => 'item3', 'price' => 50],
];
$filtered_items = array_filter($items, function($item) {
return $item['price'] > 25;
});
$max_item = max(array_column($filtered_items, 'price'));
echo $max_item; // Sortir 50
Lorsqu'il n'y a pas seulement des valeurs numériques dans le tableau, mais aussi d'autres types de données, le comportement de Max () et Array_Filter () peut produire des résultats non intuitifs. Lorsque les tableaux d'union (par exemple, les valeurs dans les tableaux ont à la fois des numéros et des chaînes), vous devez vous assurer que la conversion de type ou le jugement de type clair est effectué lors de l'utilisation de Max () et Array_Filter () .
Lorsqu'il est utilisé en combinaison avec array_filter () , il peut nous aider à trouver la valeur maximale dans le tableau après filtrage conditionnel. Qu'il s'agisse d'un tableau numérique, d'un tableau d'objets ou d'une liste d'URL, ces deux fonctions rendent notre code plus flexible et efficace. Lorsque vous l'utilisez, n'oubliez pas de traiter le tableau vide et de sélectionner les méthodes de comparaison appropriées et les conditions de filtre en fonction des besoins réels. En combinant de manière flexible ces deux fonctions, nous pouvons implémenter une logique plus complexe et plus avancée.
Étiquettes associées:
array_filter