Sobes.tech
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.