In PHP sind max () und array_filter () übliche Funktionen, und sie haben jeweils unterschiedliche Funktionen und Anwendungsszenarien. Die MAX () -Funktion gibt den Maximalwert im Array zurück, während das Array der angegebenen Bedingungen zum Filtern des Arrays verwendet wird. Die Verwendung dieser beiden Funktionen in Kombination kann einige komplexere Funktionen implementieren. Bei Verwendung dieser beiden Funktionen gibt es jedoch einige fortgeschrittene Nutzungs- und Aufmerksamkeitspunkte, die eine weitere Diskussion wert sind.
max () Funktion
Die MAX () -Funktion gibt den Maximalwert im Array zurück. Wenn das Array leer ist, wird falsch zurückgegeben. Es kann Arrays numerischer Typen verarbeiten oder Arrays komplexer Typen basierend auf bestimmten Vergleichsfunktionen vergleichen.
$numbers = [1, 3, 2, 5, 4];
$max_value = max($numbers);
echo $max_value; // Ausgabe 5
array_filter () Funktion
Array_Filter () wird verwendet, um Arrayelemente zu filtern und die Elemente beizubehalten, die den angegebenen Bedingungen erfüllen. Standardmäßig entfernt es Elemente mit einem Wert von FALSE (einschließlich 0 , null , falsch , "" usw.). Durch die Übergabe einer Rückruffunktion können wir die Filterbedingungen flexibler definieren.
$numbers = [1, 2, 3, 4, 5];
$even_numbers = array_filter($numbers, function($num) {
return $num % 2 === 0;
});
print_r($even_numbers); // Ausgabe [2, 4]
Angenommen, wir haben eine Array von Zahlen und möchten den Höchstwert in einem Array finden, das einer bestimmten Bedingung erfüllt. Zu diesem Zeitpunkt können Sie Max () und Array_filter () verwenden, um es zu erreichen. Angenommen, wir haben ein Array, das mehrere ganze Zahlen enthält. Wir müssen den maximalen Wert von mehr als 2 herausfinden:
$numbers = [1, 2, 3, 4, 5];
$filtered_numbers = array_filter($numbers, function($num) {
return $num > 2;
});
$max_value = max($filtered_numbers);
echo $max_value; // Ausgabe 5
In diesem Beispiel filtert Array_filter () zuerst alle Zahlen mehr als 2, und dann findet max () den Maximalwert im gefilterten Array.
In praktischen Anwendungen müssen wir manchmal Arrays basierend auf einigen externen Ressourcen (z. B. Daten, die über URLs erhalten wurden) filtern. Zu diesem Zeitpunkt können wir Array_Filter () und max () kombinieren, um es zu erreichen. Angenommen, wir haben eine Liste von URLs, müssen wir gültige URLs herausfiltern und den schnellsten Zugriff (oder die kürzeste Antwortzeit) finden.
Angenommen, wir haben eine Reihe von URLs und geben die Antwortzeit jeder URL durch die API zurück (dieser Prozess kann simuliert werden). Verwenden Sie zuerst Array_filter (), um gültige URLs herauszufiltern, und dann max (), um die URL mit der schnellsten Antwortzeit zu finden:
$urls = [
'http://gitbox.net/1' => 100, // Ansprechzeit 100ms
'http://gitbox.net/2' => 200, // Ansprechzeit 200ms
'http://gitbox.net/3' => 50, // Ansprechzeit 50ms
];
$filtered_urls = array_filter($urls, function($time) {
return $time < 150; // 过滤出Ansprechzeit小于150msvonURL
});
$fastest_url = array_search(max($filtered_urls), $filtered_urls);
echo "Ansprechzeit最快vonURLJa: " . $fastest_url; // Ausgabe: http://gitbox.net/3
In diesem Beispiel filtern wir URLs mit Antwortzeit von weniger als 150 ms über Array_Filter () aus und verwenden dann max (), um die URL mit der schnellsten Antwortzeit herauszufinden.
Bei Verwendung von max () wird bei leerem Filterarray MAX () FALSE zurückgegeben, was einen Fehler oder eine Ausnahme verursachen kann. Daher ist es am besten zu bestimmen, ob das gefilterte Array leer ist.
$filtered_numbers = array_filter([1, 2, 3, 4], function($num) {
return $num > 10; // Angenommen, alle Zahlen sind kleiner als10
});
if (!empty($filtered_numbers)) {
$max_value = max($filtered_numbers);
echo $max_value;
} else {
echo "没有符合条件von值";
}
max () verwendet die Vergleichsgrößenregel standardmäßig, um den Maximalwert zurückzugeben. Wenn Sie den Vergleich von Array -Elementen anpassen müssen (z. B. Array -Elemente sind Objekte), können Sie eine Rückruffunktion anpassen, um die Vergleichsregeln anzupassen. Array_filter () unterstützt auch Rückruffunktionen, die Elemente gemäß den benutzerdefinierten Bedingungen filtern können.
$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; // Ausgabe 50
Wenn es nicht nur numerische Werte im Array gibt, sondern auch andere Datenarten, kann das Verhalten von max () und array_filter () einige unintuitive Ergebnisse erzielen. Wenn Union -Arrays (zum Beispiel Werte in Arrays sowohl numerisch als auch Zeichenfolgen haben) müssen Sie sicherstellen, dass diese Konvertierung oder ein klares Typ -Urteil bei der Verwendung max () und array_filter () durchgeführt wird.
Wenn wir in Kombination mit Array_filter () verwendet werden , kann es uns helfen, den Maximalwert im Array nach bedingter Filterung zu finden. Unabhängig davon, ob es sich um ein Zahlenarray, ein Objektarray oder eine URL -Liste handelt, diese beiden Funktionen machen unseren Code flexibler und effizienter. Denken Sie bei der Verwendung daran, das leere Array zu verarbeiten und entsprechende Vergleichsmethoden und Filterbedingungen gemäß den tatsächlichen Anforderungen auszuwählen. Indem wir diese beiden Funktionen flexibel kombinieren, können wir komplexere und erweiterte Logik implementieren.
Verwandte Tags:
array_filter