Junior — Middle
Worin besteht der Unterschied zwischen der Datenübertragung per Link und per Wert, und wie wirkt sich das auf Änderungen der Daten im Programm aus?
sobes.tech KI
Antwort von AI
Der Wertversand bedeutet, dass beim Übergeben einer Variablen an eine Funktion eine Kopie davon erstellt wird. Änderungen innerhalb der Funktion beeinflussen das Original nicht. In PHP ist dies typisch für skalare Typen (int, string, bool) und Arrays (bis PHP 7 mit Kopie beim Schreiben).
Der Referenzversand bedeutet, dass eine Referenz auf die Originaldaten an die Funktion übergeben wird, und alle Änderungen innerhalb der Funktion spiegeln sich in der ursprünglichen Variablen wider. In PHP wird dies mit dem Ampersand (&) vor dem Parameter realisiert.
Beispiel:
function addOneByValue($num) {
$num += 1;
}
function addOneByReference(&$num) {
$num += 1;
}
$a = 5;
addOneByValue($a); // $a bleibt 5
addOneByReference($a); // $a wird 6
Auf diese Weise erlaubt die Referenzübergabe, dass die Funktion die übergebenen Daten ändert, während bei Wertübergabe dies nicht möglich ist.