102 PHP i MySQL dla każdego
Listing 3.35. Obsługa zmiennej liczby argumentów
<html>
<head>
<ti11e>Przykladowa strona</ti tle>
</head>
<body>
<?php
function func O
{
Sliczba_arg » func_num_args();
$str -
for($i “0: $i < $liczba_arg: $i++){
$str .- (string) func_get_arg($i):
}
return $str:
}
echo funcCTo "jest ", "przykład nr ", 1);
</body>
</html>
Liczba argumentów pobierana jest tutaj tak, jak w poprzednim przykładzie, za pomocą wywołania funkcji func_num_args, i jest przypisywana zmiennej liczba_arg. Deklarowana jest także dodatkowa zmienna str, której jest przypisywany pusty ciąg znaków. Odczyt wszystkich argumentów przekazanych funkcji func odbywa się w pętli for, której liczba iteracji jest równa wartości zapisanej w liczba_arg. Kolejne argumenty pobierane są w tej pętli za pomocą wywołań funkcji func_get_arg, której w postaci parametru przekazywany jest numer konkretnego argumentu. Każdy pobrany argument konwertowany jest na typ string za pomocą techniki rzutowania1 oraz jest dodawany do zmiennej str.
Pamiętamy, że operator . = jest operatorem łączącym operacje konkatenacji i przypisania (por. rozdział 2, sekcja „Operatory przypisania”), a zatem wiersz $str .= (string) i func_get_arg($i): ma takie samo znaczenie, jak instrukcja: $str = $str . (string) func_get_arg($i);. Po wykonaniu pętli w zmiennej str znajdą się wszystkie argumenty przekazane funkcji func, przekonwertowane na typ string. Wartość tej zmiennej jest na zakończenie zwracana za pomocą instrukcji return. O tym, że tak przygotowany kod działa zgodnie z założeniami, przekonujemy się wywołując funkcję func z przykładowymi parametrami i wyświetlając wynik jej działania za pomocą instrukcji echo.
Z formalnego punktu widzenia jawna konwersja nie jest w tym miejscu niezbędna, gdyż i tak zostałaby wykonana konwersja automatyczna. Niemniej zastosowanie jawnej konwersji zwiększa czytelność kodu.