Menu
Coddy logo textTech

Reduzieren mit 'array_reduce'

Teil des Abschnitts Logik & Ablauf der PHP-Journey von Coddy. Lektion 43 von 68.

Die Funktion array_reduce() verfolgt einen anderen Ansatz als array_map() und array_filter(). Anstatt ein neues Array zurückzugeben, verarbeitet sie alle Elemente in einem Array, um einen einzelnen Wert zu erzeugen. Dies macht sie ideal für Operationen wie das Berechnen von Summen, das Finden von Maximalwerten oder das Kombinieren aller Elemente zu einem einzigen Ergebnis.

Die Funktion erfordert drei Parameter: das zu verarbeitende Array, eine Callback-Funktion, die festlegt, wie Elemente kombiniert werden, und einen optionalen Anfangswert. Die Callback-Funktion erhält zwei Parameter: das angesammelte Ergebnis (genannt „carry“) und das aktuelle Array-Element.

<?php
function addNumbers($carry, $item) {
    return $carry + $item;
}

$numbers = [1, 2, 3, 4, 5];
$sum = array_reduce($numbers, "addNumbers", 0);
// Ergebnis: 15
?>

In diesem Beispiel beginnt die Funktion mit einem Initialwert von 0 und ruft dann wiederholt addNumbers mit der laufenden Summe und jedem Array-Element auf. Dieser Akkumulationsprozess wird fortgesetzt, bis alle Elemente verarbeitet wurden, sodass Sie den endgültigen reduzierten Wert erhalten.

challenge icon

Aufgabe

Einfach

Du erhältst zwei Eingaben: eine durch Kommas getrennte Liste von Zahlen und einen Operationstyp. Die erste Eingabe enthält Zahlen als Zeichenfolge im Format 5,10,15,20,25, und die zweite Eingabe ist ein einzelnes Zeichen, das die Operation angibt: S für die Summe, P für das Produkt oder M für das Maximum.

Lies beide Eingaben ein, wandle die durch Kommas getrennten Zahlen in ein Array von Ganzzahlen um, erstelle eine benutzerdefinierte Callback-Funktion, die die angegebene Operation ausführt, verwende array_reduce() mit deiner Callback-Funktion und einem passenden Anfangswert, um alle Zahlen zu einem einzigen Ergebnis zu verarbeiten, und gib das Endergebnis aus.

Details zu den Operationen:

  • S (Summe): Addiere alle Zahlen (Anfangswert: 0)
  • P (Produkt): Multipliziere alle Zahlen (Anfangswert: 1)
  • M (Maximum): Ermittle die größte Zahl (Anfangswert: erste Zahl im Array oder eine sehr kleine Zahl)

Deine Callback-Funktion sollte zwei Parameter akzeptieren: das akkumulierte Ergebnis (carry) und das aktuelle Array-Element (item), und anschließend den aktualisierten akkumulierten Wert basierend auf dem Operationstyp zurückgeben.

Eingabeformat:

  • Erste Zeile: Durch Kommas getrennte Zahlen (Beispiel: 5,10,15,20,25)
  • Zweite Zeile: Operationstyp – entweder S, P oder M (Beispiel: S)

Erwartete Ausgabe: Eine einzelne Zahl, die das Ergebnis der Reduce-Operation darstellt

Probier es selbst

<?php
// Eingabe lesen
$numbers_input = trim(fgets(STDIN));
$operation = trim(fgets(STDIN));

// Kommagetrennte Zeichenfolge in ein Array von Ganzzahlen umwandeln
$numbers = array_map('intval', explode(',', $numbers_input));

// TODO: Schreibe deinen Code unten
// Erstelle eine Callback-Funktion basierend auf dem Operationstyp
// Verwende array_reduce() mit deiner Callback-Funktion und einem angemessenen Initialwert


// Das Ergebnis ausgeben
echo $result;
?>
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