Junior — Middle
Kuo skiriasi duomenų perdavimas per nuorodą ir per reikšmę, ir kaip tai veikia duomenų keitimą programoje?
sobes.tech AI
Atsakymas iš AI
Duomenų perdavimas pagal reikšmę reiškia, kad perduodant kintamąjį funkcijai, sukuriama jo kopija. Funkcijos viduje atlikti pakeitimai neveikia originalo. PHP tai būdinga skaliariniams tipams (int, string, bool) ir masyvams (iki PHP 7, kopijuojant rašant).
Perdavimas nuoroda reiškia, kad funkcijai perduodama nuoroda į originalius duomenis, ir bet kokie pakeitimai funkcijos viduje atsispindi originalioje kintamojoje. PHP tai įgyvendina su simboliu ampersand (&) prieš parametrą.
Pavyzdys:
function addOneByValue($num) {
$num += 1;
}
function addOneByReference(&$num) {
$num += 1;
}
$a = 5;
addOneByValue($a); // $a liks 5
addOneByReference($a); // $a taps 6
Šiuo būdu, perdavimas nuoroda leidžia funkcijai keisti perduodamus duomenis, o per reikšmę — ne.