Menu
Coddy logo textTech

Referenzübergabe

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

Standardmäßig erhält die Funktion eine Kopie des Wertes dieser Variablen, wenn Sie eine Variable an eine Funktion in PHP übergeben. Das bedeutet, dass Änderungen innerhalb der Funktion die ursprüngliche Variable außerhalb der Funktion nicht beeinflussen.

Manchmal möchten Sie jedoch, dass eine Funktion die ursprüngliche Variable direkt ändert. Hier kommt die Übergabe per Referenz ins Spiel. Indem Sie ein kaufmännisches Und-Zeichen (&) vor den Parameternamen in Ihrer Funktionsdefinition setzen, weisen Sie 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
?>

Beachten Sie, wie sich $value von 10 auf 20 geändert hat, obwohl wir nichts aus der Funktion zurückgegeben haben. Der Parameter &$number erstellt eine direkte Verknüpfung zur ursprünglichen Variable $value, was es der Funktion ermöglicht, diese direkt zu ändern.

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

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

Erstellen Sie eine Funktion namens updateInventory, die drei Parameter entgegennimmt: eine Referenz auf eine Mengenvariable (quantity), 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.

Sie erhalten drei Eingaben: die Anfangsmenge, den hinzuzufügenden Betrag und den zu entfernenden Betrag. Lesen Sie alle drei Eingaben ein, erstellen Sie eine Variable mit der Anfangsmenge, rufen Sie die Funktion updateInventory auf, wobei Sie die Menge als Referenz zusammen mit den Beträgen zum Hinzufügen und Entfernen übergeben, und geben Sie die aktualisierte Menge aus.

Eingabeformat: Drei Zeilen - die erste Zeile enthält die Anfangsmenge (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

Spickzettel

Standardmäßig übergibt PHP Variablen als Wert (eine Kopie) an Funktionen. Um die ursprüngliche Variable zu ändern, verwenden Sie die Referenzübergabe, indem Sie ein kaufmännisches Und-Zeichen (&) vor den Parameternamen setzen:

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

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

Der Parameter &$number erstellt eine direkte Verknüpfung zur ursprünglichen Variable, wodurch die Funktion diese ändern kann, ohne einen Wert zurückzugeben. Dies ist nützlich, um mehrere Variablen zu ändern oder effizient mit großen Datenstrukturen zu arbeiten.

Probier es selbst

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

// Mengenvariable erstellen
$quantity = $initialQuantity;

// TODO: Erstellen Sie hier die Funktion updateInventory, die einen Referenzparameter entgegennimmt

// TODO: Rufen Sie die Funktion updateInventory mit der Menge als Referenz auf

// Die aktualisierte Menge ausgeben
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