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
?>
Udział wzięli
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
?>