Junior — Middle
Czym różni się przesyłanie danych przez odwołanie i przez wartość, i jak to wpływa na zmiany danych w programie?
sobes.tech AI
Odpowiedź od AI
Przesyłanie danych przez wartość oznacza, że podczas przekazywania zmiennej do funkcji tworzona jest jej kopia. Zmiany wewnątrz funkcji nie wpływają na oryginał. W PHP jest to charakterystyczne dla typów skalarnych (int, string, bool) i tablic (do PHP 7 z kopiowaniem przy zapisie).
Przesyłanie przez referencję oznacza, że do funkcji przekazywana jest referencja do oryginalnych danych, a wszelkie zmiany wewnątrz funkcji odzwierciedlają się na zmiennej źródłowej. W PHP realizuje się to za pomocą znaku ampersand (&) przed parametrem.
Przykład:
function addOneByValue($num) {
$num += 1;
}
function addOneByReference(&$num) {
$num += 1;
}
$a = 5;
addOneByValue($a); // $a pozostanie 5
addOneByReference($a); // $a stanie się 6
W ten sposób przesyłanie przez referencję pozwala funkcji zmieniać przekazane dane, a przez wartość — nie.