Przejdź do treści

Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

Funkcja - modyfikowanie zmiennych globalnych

czwartek,

Funkcja - modyfikowanie zmiennych globalnych

W języku PHP domyślnie lokalne zmienne funkcji nie wpływają na wartość zmiennych poza nią, nawet jeśli nazwy są takie same. To zachowanie można zmienić. Przedstawiamy dwa sposoby.

Standardowo argumenty przekazywane są przez wartość i operacje wewnątrz funkcji na wpływają na pierwotną zmienną. Ten sposób najczęściej pozwala osiągnąć zamierzone cele. Istnieje jednak także metoda przekazywania argumentu przez referencję, wtedy „oryginalna” zmienna zostanie zmodyfikowana. Aby skorzystać z mechanizmu referencji, należy w nagłówku deklaracji funkcji umieścić przed nazwą parametru znak & (ampersand). Wtedy przekazany do funkcji argument będzie mógł ulec zmodyfikowany w znaczeniu globalnym. Zastosowana w przykładowej funkcji instrukcja return jest właściwie zbędna i została dołączona tylko dla łatwiejszej ilustracji działania mechanizmu.

<?php
   
    function iloczyn( &$a, $b) {
       $a = $a * $b;
       return $a;
    }

    $a = 3;

    echo iloczyn($a,3); // 9
    echo $a; // 9

    iloczyn($a,2);
    echo $a; // 18

?>

Druga prezentowana metoda jest uważana za bardzo złą praktykę programistyczną, jednak skoro istnieje taka możliwość, to warto ją znać. Wewnątrz funkcji do zmiennej globalnej można odwołać się dzięki instrukcji global. Możliwe jest potraktowanie w ten sposób kilku zmiennych, wtedy po słowie global należy wpisać ich nazwy oddzielone przecinkami.

<?php
   
    function iloczyn($b) {
       global $a;
       $a = $a * $b;
    }

    $a = 2;

    iloczyn(2);
    echo $a; // 4

    iloczyn(3);
    echo $a; // 12

?>

Udział wzięli

global

Artykuł: Światowy Dzień Oszczędzania

Światowy Dzień Oszczędzania

Artykuł: Halloweenowy Konkurs na Angielskim!

Halloweenowy Konkurs na Angielskim!

Artykuł: Enlightenment

Enlightenment

Artykuł: System Multics

System Multics

Artykuł: Testujemy RTX 3070

Testujemy RTX 3070

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły