Junior — Middle
Mi a különbség az adat küldése linken keresztül és értéken keresztül, és hogyan befolyásolja ez a programon belüli adatmódosítást?
sobes.tech MI
Válasz az MI-től
Az érték szerinti adatátvitel azt jelenti, hogy amikor egy változót átadunk egy függvénynek, akkor annak másolata jön létre. A függvényen belüli változtatások nem befolyásolják az eredetit. PHP-ben ez jellemző a skalár típusokra (int, string, bool) és tömbökre (PHP 7-ig másolással íráskor).
A hivatkozás szerinti átadás azt jelenti, hogy a függvény az eredeti adatokra mutató hivatkozást kap, és a függvényen belüli változtatások az eredeti változón is megjelennek. PHP-ben ezt az & szimbólummal lehet megvalósítani a paraméter előtt.
Példa:
function addOneByValue($num) {
$num += 1;
}
function addOneByReference(&$num) {
$num += 1;
}
$a = 5;
addOneByValue($a); // $a továbbra is 5
addOneByReference($a); // $a 6 lesz
Így a hivatkozás szerinti átadás lehetővé teszi, hogy a függvény módosítsa a kapott adatokat, míg az érték szerinti nem.