Junior — Middle
V čem spočívá rozdíl mezi přenosem dat přes odkaz a přes hodnotu, a jak to ovlivňuje změny dat uvnitř programu?
sobes.tech AI
Odpověď od AI
Přenesení dat hodnotou znamená, že při předání proměnné do funkce je vytvořena její kopie. Změny uvnitř funkce neovlivní originál. V PHP je to typické pro skalární typy (int, string, bool) a pole (do PHP 7 s kopírováním při zápisu).
Přenesení odkazem znamená, že do funkce je předána reference na původní data, a jakékoli změny uvnitř funkce se odrážejí na původní proměnné. V PHP se to realizuje pomocí ampersandu (&) před parametrem.
Příklad:
function addOneByValue($num) {
$num += 1;
}
function addOneByReference(&$num) {
$num += 1;
}
$a = 5;
addOneByValue($a); // $a zůstane 5
addOneByReference($a); // $a bude 6
Tímto způsobem umožňuje předání odkazem funkci měnit předané údaje, zatímco předání hodnotou nikoliv.