Menu
Coddy logo textTech

Referenzübergabe

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

Standardmäßig erhält eine Funktion in PHP eine Kopie des Werts, wenn du ihr eine variable übergibst. Das bedeutet, dass Änderungen innerhalb der Funktion die ursprüngliche variable außerhalb der Funktion nicht beeinflussen.

Manchmal möchtest du jedoch, dass eine Funktion die ursprüngliche Variable direkt ändert. Hier kommt die Übergabe per Referenz ins Spiel. Indem du in deiner Funktionsdefinition ein kaufmännisches Und (&) vor den Parameternamen setzt, weist du PHP an, die tatsächliche Variable anstelle einer Kopie zu übergeben:

<?php
function doubleValue(&$number) {
    $number = $number * 2;
}

$value = 10;
doubleValue($value);
echo $value;  // Ausgabe: 20
?>

Beachte, wie sich $value von 10 auf 20 geändert hat, obwohl wir aus der Funktion nichts zurückgegeben haben. Der Parameter &$number stellt eine direkte Verbindung zur ursprünglichen Variable $value her und ermöglicht es der Funktion, sie direkt zu ändern.

Diese Technik ist besonders nützlich, wenn du eine Funktion benötigst, um mehrere Variablen zu ändern, oder wenn du mit großen Datenstrukturen arbeitest, bei denen das Kopieren ineffizient wäre.

challenge icon

Aufgabe

Einfach

Erstelle eine Funktion namens updateInventory, die drei Parameter übernimmt: eine Referenz auf eine Mengenvariable, einen hinzuzufügenden Betrag und einen zu entfernenden Betrag. Die Funktion soll die ursprüngliche Menge ändern, indem sie den ersten Betrag addiert und den zweiten Betrag subtrahiert.

Du erhältst drei Eingaben: die anfängliche Menge, den hinzuzufügenden Betrag und den zu entfernenden Betrag. Lies alle drei Eingaben ein, erstelle eine Variable mit der anfänglichen Menge, rufe die Funktion updateInventory auf und übergib dabei die Menge als Referenz zusammen mit den Hinzufüge- und Entfernebeträgen. Gib anschließend die aktualisierte Menge aus.

Eingabeformat: Drei Zeilen – die erste Zeile enthält die anfängliche Menge (eine Zahl), die zweite Zeile enthält den hinzuzufügenden Betrag (eine Zahl), die dritte Zeile enthält den zu entfernenden Betrag (eine Zahl)

Erwartete Ausgabe: Die aktualisierte Menge nach dem Hinzufügen und Entfernen

Probier es selbst

<?php
// Eingaben lesen
$initialQuantity = intval(fgets(STDIN));
$amountToAdd = intval(fgets(STDIN));
$amountToRemove = intval(fgets(STDIN));

// Quantity-Variable erstellen
$quantity = $initialQuantity;

// TODO: Erstelle hier die updateInventory-Funktion, die einen Referenzparameter nimmt

// TODO: Rufe die updateInventory-Funktion mit der quantity per Referenz auf

// Gib die aktualisierte quantity aus
echo $quantity;
?>
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