Menu
CoddyTech

'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.

challenge icon

Aufgabe

Einfach

Sie 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

?>
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-PHP-Compiler