PHP i MySQL dla każdego
Argumenty funkcji mogą być przekazywane na dwa różne sposoby. We wszystkich dotychczas prezentowanych przykładach było to tak zwane przekazywanie przez wartość. Oznacza to, że funkcja tak naprawdę otrzymuje kopię argumentu. Ponieważ w przykładach przekazywaliśmy zawsze jawną wartość (np. 5, 10), nie miało to żadnego znaczenia. Spójrzmy jednak na przykład widoczny na listingu 3.31.
Listing 3.31. Nieprawidłowe przekazanie argumentu
<html>
<head>
<t1tle>Przykładowa strona</tit1e>
</head>
<body>
<?php
function dodajJeden(Sliczba)
{
Sliczba = Sliczba + 1:
}
Sliczba - 1;
echoOPrzed wywołaniem funkcji liczba - Sliczba <br>"): dodajJeden(Sliczba):
echoCPo wywołaniu funkcji liczba - Sliczba <br>"):
?>
</body>
</html>
Tym razem w skrypcie zdefiniowana została funkcja doda jJeden. Założeniem jest, że będzie ona zwiększała przekazaną jej wartość o jeden. W dalszej części skryptu zdefiniowana została zmienna liczba, której przypisano wartość 1. Następnie została wywołana funkcja dodajJeden. Moglibyśmy się spodziewać, że po wywołaniu tej funkcji zmienna liczba będzie miała wartość 2(1 + 1= 2). Tak jednak nie jest. Dzięki instrukcjom echo widzimy wyraźnie (rysunek 3.17), że wartość zmiennej liczba wcale się nie zmieniła. Dlaczego? Właśnie dlatego, że argument funkcji doda jJeden jest przekazywany przez wartość. Oznacza to, że funkcja otrzymuje kopię zmiennej liczba i wszelkie operacje wykonuje na tej kopii! Stąd nie mógł się zmienić stan zmiennej poza funkcją.
0k Edycja Widok Przejdź Zakładki Narzędzia Pomoc
Q) @1 I Li http://tocahostrndex.php ^ Rozpocznij przygód... Aktualności
Rysunek 3.17.
Po wywołaniu funkcji wartość zmiennej nie uległa zmianie