Sobes.tech
Intern

Jak se v PHP předávají proměnné?

sobes.tech AI

Odpověď od AI

Proměnné v PHP jsou ve výchozím nastavení předávány hodnotou. To znamená, že při přiřazení hodnoty jedné proměnné jiné nebo při předání proměnné do funkce se vytvoří kopie hodnoty. Změny v této kopii neovlivní původní proměnnou.

Nicméně, proměnné mohou být také předávány odkazem. V tomto případě se místo kopie hodnoty předá ukazatel na stejnou oblast paměti jako původní proměnná. Změny provedené přes odkaz přímo ovlivňují původní proměnnou.

Předání odkazem se používá:

  • Přiřazení odkazem: Použití operátoru přiřazení s ampersandem (=&).

    // Přiřazení odkazem
    $a = 10;
    $b =& $a;
    $b = 20; // Změna $b také změní $a
    // $a je nyní 20
    
  • Předání parametru odkazem do funkce: Přidání ampersandu (&) před název parametru v definici funkce.

    <?php
    // Funkce, která přijímá argument odkazem
    function modifyValue(&$value) {
        $value *= 2;
    }
    
    $number = 5;
    modifyValue($number);
    // $number je nyní 10
    ?>
    
  • Návrat hodnoty odkazem z funkce: Použití ampersandu (&) před názvem funkce v její definici.

    <?php
    // Funkce, která vrací hodnotu odkazem
    function &getReference() {
        static $value = 0;
        $value++;
        return $value;
    }
    
    $a = &getReference();
    $a = 100; // Změna $a také změní statickou proměnnou uvnitř funkce
    
    $b = &getReference(); // $b nyní odkazuje na stejnou statickou proměnnou (rovno 101)
    ?>
    

Je důležité poznamenat, že některé datové typy, například objekty, jsou vždy předávány odkazem (přesněji řečeno, předává se odkaz na objekt). Při přiřazení jednoho objektu jinému, obě proměnné odkazují na stejnou instanci objektu.

Metoda předání Jak funguje Použití
Podle hodnoty Vytvoří se kopie hodnoty Výchozí chování, bezpečné pro původní proměnnou
Podle odkazu Předá se ukazatel na paměť Změny přímo ovlivňují původní proměnnou