Kaip perduodamos kintamosios PHP?
sobes.tech AI
Atsakymas iš AI
PHP pagal numatytuosius nustatymus kintamieji perduodami reikšme. Tai reiškia, kad priskiriant vieno kintamojo reikšmę kitam arba perduodant kintamąjį funkcijai, sukuriama reikšmės kopija. Pakeitimai šioje kopijoje neturi įtakos pirminiam kintamajam.
Tačiau kintamieji gali būti perduodami ir nuoroda. Tokiu atveju, vietoj reikšmės kopijos, perduodamas nuorodos į tą pačią atminties sritį rodyklė kaip ir pirminis kintamasis. Pakeitimai per nuorodą tiesiogiai veikia pirminį kintamąjį.
Nuorodos perdavimas naudojamas:
-
Nuorodos priskyrimas: naudojant operatorių
=&.// Nuorodos priskyrimas $a = 10; $b =& $a; $b = 20; // pakeitus $b, keičiasi ir $a // dabar $a yra lygus 20 -
Funkcijai perduodama nuoroda: funkcijos apibrėžime parametro pavadinimo prieš dedant
&.<?php // Funkcija, priimanti argumentą nuoroda function modifyValue(&$value) { $value *= 2; } $number = 5; modifyValue($number); // dabar $number yra lygus 10 ?> -
Reikšmės grąžinimas nuoroda iš funkcijos: funkcijos apibrėžime prieš funkcijos pavadinimą dedant
&.<?php // Funkcija, grąžinanti reikšmę nuoroda function &getReference() { static $value = 0; $value++; return $value; } $a = &getReference(); $a = 100; // pakeitus $a, keičiasi ir funkcijos statinė reikšmė $b = &getReference(); // $b dabar nuoroda į tą pačią statinę reikšmę (reikšmė 101) ?>
Svarbu pažymėti, kad kai kurios duomenų rūšys, tokios kaip objektai, visada perduodami nuoroda (arba tiksliau, perduodama nuoroda į objektą). Kai vienas objektas perduodamas kitam, abi kintamosios nurodo tą patį objekto egzempliorių:
| Perdavimo būdas | Kaip veikia | Naudojimas |
|---|---|---|
| Pagal reikšmę | Sukuriama reikšmės kopija | Saugu pirminiam kintamajam |
| Pagal nuorodą | Perduodamas atminties rodyklė | Pakeitimai tiesiogiai veikia pirminį kintamąjį |