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.