Sobes.tech
Junior — Middle

V čom spočíva rozdiel medzi prenosom dát cez odkaz a cez hodnotu, a ako to ovplyvňuje zmeny dát v programe?

sobes.tech AI

Odpoveď od AI

Odosielanie údajov podľa hodnoty znamená, že pri odovzdaní premennej do funkcie sa vytvorí jej kópia. Zmeny vo vnútri funkcie neovplyvňujú originál. V PHP je to charakteristické pre skalárne typy (int, string, bool) a polia (do PHP 7 s kopírovaním pri zápise).

Odosielanie odkazom znamená, že do funkcie sa odovzdáva referencia na pôvodné údaje, a akékoľvek zmeny vo vnútri funkcie sa odrážajú na pôvodnej premennej. V PHP sa to realizuje pomocou symbolu ampersand (&) pred parametrom.

Príklad:

function addOneByValue($num) {
    $num += 1;
}

function addOneByReference(&$num) {
    $num += 1;
}

$a = 5;
addOneByValue($a); // $a zostane 5
addOneByReference($a); // $a bude 6

Týmto spôsobom umožňuje odovzdanie odkazom funkcii meniť odovzdané údaje, zatiaľ čo odovzdanie hodnotou nie.