Sobes.tech
Intern

Kā tiek nodotas mainīgās PHP?

sobes.tech AI

Atbilde no AI

PHP pēc noklusējuma mainīgie tiek nodoti pēc vērtības. Tas nozīmē, ka, piešķirot vienam mainīgajam citas mainīgās vērtību vai nododot mainīgo funkcijai, tiek izveidīta vērtības kopija. Šīs kopijas izmaiņas neietekmē sākotnējo mainīgo.

Tomēr mainīgie var tikt nodoti arī ar atsauci. Šādā gadījumā, vietā, lai nodotu vērtības kopiju, tiek nodots norādītājs uz to pašu atmiņas apgabalu kā sākotnējais mainīgais. Izmaiņas, kas veiktas ar atsauci, tieši ietekmē sākotnējo mainīgo.

Atsauces nodošana tiek izmantota:

  • Atsauces piešķiršana: ar operatoru =&:

    // Atsauces piešķiršana
    $a = 10;
    $b =& $a;
    $b = 20; // izmaiņas $b ietekmē arī $a
    // tagad $a ir vienāds ar 20
    
  • Funkcijai nododot ar atsauci: funkcijas definīcijā parametra nosaukuma priekšā pievienojot &:

    <?php
    // Funkcija, kas pieņem argumentu ar atsauci
    function modifyValue(&$value) {
        $value *= 2;
    }
    
    $number = 5;
    modifyValue($number);
    // tagad $number ir vienāds ar 10
    ?>
    
  • Vērtības atgriešana ar atsauci no funkcijas: funkcijas definīcijā pirms funkcijas nosaukuma pievienojot &:

    <?php
    // Funkcija, kas atgriež vērtību ar atsauci
    function &getReference() {
        static $value = 0;
        $value++;
        return $value;
    }
    
    $a = &getReference();
    $a = 100; // izmaiņas ietekmē funkcijas statisko mainīgo
    
    $b = &getReference(); // $b tagad atsauce uz to pašu statisko mainīgo (vērtība 101)
    ?>
    

Svarīgi atzīmēt, ka dažas datu tipi, piemēram, objekti, vienmēr tiek nodoti ar atsauci (vai precīzāk, tiek nodota atsauce uz objektu). Kad viens objekts tiek nodots citam, abas mainīgās norāda uz to pašu objekta eksemplāru:

Nodošanas veids Kā tas darbojas Lietojums
Pēc vērtības Tiek izveidota vērtības kopija Droši sākotnējam mainīgajam
Pēc atsauces Tiek nodots atmiņas norādītājs Izmaiņas tieši ietekmē sākotnējo mainīgo