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 benötigt drei Parameter: das zu verarbeitende Array, eine Callback-Funktion, die definiert, wie Elemente kombiniert werden, und einen optionalen Initialwert. Die Callback-Funktion erhält zwei Parameter: das akkumulierte 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 sind, was zum endgültigen reduzierten Wert führt.

quiz iconTeste dich selbst

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

quiz iconTeste dich selbst

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

quiz iconTeste dich selbst

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

challenge icon

Aufgabe

Einfach

Sie erhalten 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 Summe, P für Produkt oder M für Maximum.

Lesen Sie beide Eingaben ein, konvertieren Sie die durch Kommas getrennten Zahlen in ein Array von Ganzzahlen, erstellen Sie eine benutzerdefinierte Callback-Funktion, die die angegebene Operation ausführt, verwenden Sie array_reduce() mit Ihrer Callback-Funktion und einem geeigneten Initialwert, um alle Zahlen zu einem einzigen Ergebnis zu verarbeiten, und geben Sie das Endergebnis aus.

Details zur Operation:

  • S (Summe): Addieren Sie alle Zahlen (Initialwert: 0)
  • P (Produkt): Multiplizieren Sie alle Zahlen (Initialwert: 1)
  • M (Maximum): Finden Sie die größte Zahl (Initialwert: erste Zahl im Array oder eine sehr kleine Zahl)

Ihre Callback-Funktion sollte zwei Parameter akzeptieren: das akkumulierte Ergebnis (carry) und das aktuelle Array-Element (item), und dann 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

Spickzettel

Die Funktion array_reduce() verarbeitet alle Elemente in einem Array, um einen einzelnen Wert zu erzeugen, was ideal für die Berechnung von Summen oder das Kombinieren von Elementen ist.

Sie benötigt drei Parameter: das zu verarbeitende Array, eine Callback-Funktion und einen optionalen Initialwert. Der Callback erhält das akkumulierte Ergebnis (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
?>

Verwenden Sie number_format($total, 2), um Ergebnisse auf 2 Dezimalstellen zu formatieren.

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: Schreiben Sie Ihren Code unten
// Erstellen Sie eine Callback-Funktion basierend auf dem Operationstyp
// Verwenden Sie array_reduce() mit Ihrer Callback-Funktion und einem entsprechenden Initialwert


// 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