Kuidas PHP-s edastatakse muutujad?
sobes.tech AI
Vastus AI-lt
PHP-s on muutujad vaikimisi väärtuse järgi edastatud. See tähendab, et kui ühe muutuja väärtus omistatakse teisele või antakse funktsioonile, luuakse väärtuse koopia. Selle koopia muudatused ei mõjuta algset muutujat.
Kuid muutujad võivad edastada ka viitega. Sel juhul, väärtuse koopia asemel, edastatakse viit samale mälu piirkonnale, mis algne muutuja. Viitega tehtud muudatused mõjutavad otseselt algset muutujat.
Viitega edastamine kasutatakse:
-
Viitega omistamine: kasutades operaatorit
=&.// Viitega omistamine $a = 10; $b =& $a; $b = 20; // Muudatus $b-s muudab ka $a-d // nüüd on $a võrdne 20 -
Funktsioonile viitega edastamine: funktsiooni definitsioonis parameetri nime ees lisades
&:<?php // Funktsioon, mis võtab argumenti viitega function modifyValue(&$value) { $value *= 2; } $number = 5; modifyValue($number); // nüüd on $number võrdne 10 ?> -
Väärtuse tagastamine viitega funktsioonist: funktsiooni definitsioonis enne funktsiooni nime lisades
&:<?php // Funktsioon, mis tagastab väärtuse viitega function &getReference() { static $value = 0; $value++; return $value; } $a = &getReference(); $a = 100; // Muudatus mõjutab funktsiooni staatilist muutujat $b = &getReference(); // $b viitab samale staatilisele muutujale (väärtus 101) ?>
Oluline on märkida, et mõned andmetüübid, näiteks objektid, edastatakse alati viitega (või täpsemalt, edastatakse viide objekti). Kui üks objekt edastatakse teisele, viitavad mõlemad muutujad samale objekti eksemplarile:
| Edastamise meetod | Kuidas see töötab | Kasutus |
|---|---|---|
| Väärtuse järgi | Luues väärtuse koopia | Ohutu algsele muutujale |
| Viitega | Edastades mälu näitaja | Muudatused mõjutavad otseselt algset muutujat |