'array_filter' mit benutzerdefinierten Funktionen
Teil des Abschnitts Logik & Ablauf der PHP-Journey von Coddy. Lektion 42 von 68.
Während array_filter() ohne einen Callback leere Werte entfernt, entfaltet es seine wahre Stärke erst, wenn Sie eine benutzerdefinierte Callback-Funktion bereitstellen. Dies ermöglicht es Ihnen, genau zu definieren, welche Elemente basierend auf Ihren spezifischen Kriterien behalten werden sollen.
Um eine benutzerdefinierte Funktion mit array_filter() zu verwenden, übergeben Sie Ihren Funktionsnamen als zweiten Parameter. Ihre Callback-Funktion sollte einen Parameter (das aktuelle Array-Element) akzeptieren und true zurückgeben, um das Element zu behalten, oder false, um es auszuschließen.
<?php
function isEven($number) {
return $number % 2 === 0;
}
$numbers = [1, 2, 3, 4, 5, 6, 7, 8];
$evenNumbers = array_filter($numbers, "isEven");
// Ergebnis: [2, 4, 6, 8]
?>In diesem Beispiel testet die isEven-Funktion jede Zahl mit dem Modulo-Operator. Nur Zahlen, die true zurückgeben (gerade Zahlen), werden in das gefilterte Ergebnis aufgenommen. Dieser Ansatz gibt Ihnen die vollständige Kontrolle über die Filterlogik, was array_filter() unglaublich vielseitig für Datenverarbeitungsaufgaben macht.
Aufgabe
EinfachSie erhalten zwei Eingaben: eine kommagetrennte Liste von Produktpreisen und einen Mindestpreisschwellenwert. Die erste Eingabe enthält Preise als Zeichenfolge im Format 15.99,45.00,8.50,120.00,22.75, und die zweite Eingabe ist der Mindestpreisschwellenwert als Zahl (Beispiel: 20).
Lesen Sie beide Eingaben ein, konvertieren Sie die kommagetrennten Preise in ein Array von Zahlen, erstellen Sie eine benutzerdefinierte Callback-Funktion, die prüft, ob ein Preis größer oder gleich dem Schwellenwert ist, verwenden Sie array_filter() mit Ihrer benutzerdefinierten Funktion, um nur die Preise zu behalten, die den Schwellenwert erfüllen, und geben Sie jeden gefilterten Preis in der Reihenfolge ihres Erscheinens in einer separaten Zeile aus.
Ihre benutzerdefinierte Callback-Funktion sollte einen Parameter (den Preis) akzeptieren und true zurückgeben, wenn der Preis größer oder gleich dem Schwellenwert ist, andernfalls false.
Eingabeformat:
- Erste Zeile: Kommagetrennte Produktpreise (Beispiel:
15.99,45.00,8.50,120.00,22.75) - Zweite Zeile: Mindestpreisschwellenwert als Zahl (Beispiel:
20)
Erwartete Ausgabe: Jeder Preis, der den Schwellenwert erreicht oder überschreitet, wird in einer separaten Zeile ausgegeben, wobei die ursprüngliche Reihenfolge beibehalten wird.
Probier es selbst
<?php
// Eingabe lesen
$prices_input = trim(fgets(STDIN));
$threshold = floatval(fgets(STDIN));
// Kommagetrennte Preise in ein Array umwandeln
$prices = array_map('floatval', explode(',', $prices_input));
// TODO: Schreibe deinen Code unten
// Erstelle eine benutzerdefinierte Callback-Funktion, die prüft, ob ein Preis >= threshold ist
// Verwende array_filter() mit deiner benutzerdefinierten Funktion
// Gib jeden gefilterten Preis in einer separaten Zeile aus
?>Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Fortgeschrittene Funktionen
Anonyme FunktionenClosures und 'use'Arrow FunctionsCallback-FunktionenVerwendung von 'call_user_func'VariablenfunktionenReferenzübergabeRekursive FunktionenRückblick: Funktions-Medley4Mehrdimensionale Arrays
Ein 2D-Array erstellenZugriff auf 2D-Array-ElementeÄndern von 2D-Array-ElementenIterieren mit verschachtelten Schleifen2D assoziative ArraysZusammenfassung: Einfache Gitter-Übung2Fortgeschrittene Array-Manipulationen
Hinzufügen mit 'array_push'Entfernen mit 'array_pop'Hinzufügen mit 'array_unshift'Entfernen mit 'array_shift'Indizierte Arrays zusammenführenAssoziative Arrays zusammenführenExtrahieren mit 'array_slice'Werte mit 'in_array'Schlüssel mit 'array_search'Rückblick: Playlist-Übung3Arrays sortieren
Indizierte Arrays aufsteigend sortierenIndizierte Arrays absteigend sortierenAssoziative Arrays nach Wert sortierenAssoziative Arrays nach Schlüssel sortierenNatürliche SortierungBenutzerdefiniertes Sortieren mit 'usort'Recap: Leaderboard-Sortierung6Array-Funktionen höherer Ordnung
Transformieren mit 'array_map''array_map' mit benutzerdefinierten FunktionenFiltern mit 'array_filter''array_filter' mit benutzerdefinierten FunktionenReduzieren mit 'array_reduce'Durchlaufen mit 'array_walk'Zusammenfassung: DatenverarbeitungÜbe selbstständig: Online-PHP-Compiler