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ł: Slackware

Slackware

Artykuł: Virtual Desktop Infrastructure

Virtual Desktop Infrastructure

Artykuł: Wirtualizacja: Overcommitment

Wirtualizacja: Overcommitment

Artykuł: Marc Andreessen

Marc Andreessen

Artykuł: Zakończenie staży

Zakończenie staży

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły