Sobes.tech
Intern

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