Junior — Middle
Kuidas erinevad andmete saatmine lingi ja väärtuse kaudu ning kuidas see mõjutab andmete muutumist programmis?
sobes.tech AI
Vastus AI-lt
Andmete saatmine väärtuse järgi tähendab, et muutuja edastamisel funktsioonile luuakse selle koopia. Funktsiooni sees tehtud muudatused ei mõjuta algset. PHP-s on see tüüpiline skalaartüüpidele (int, string, bool) ja massiividele (kuni PHP 7, kirjutamisel kopeerimisega).
Viitamise kaudu saatmine tähendab, et funktsioonile antakse edasi viide algandmetele, ning kõik muudatused funktsiooni sees kajastuvad algses muutujas. PHP-s realiseeritakse see ampersandi (&) sümboliga parameetri ees.
Näide:
function addOneByValue($num) {
$num += 1;
}
function addOneByReference(&$num) {
$num += 1;
}
$a = 5;
addOneByValue($a); // $a jääb 5-ks
addOneByReference($a); // $a saab 6
Sellisel viisil võimaldab viitamisega saatmine funktsioonil muuta edastatud andmeid, väärtuse järgi saatmine mitte.