wtorek,
Nieokreślona liczba argumentow funkcji
Funkcja użytkownika w języku PHP może pobierać nieokreśloną liczbę argumentów, np. w przypadku kiedy w deklaracji funkcji został uwzględniony tylko jeden parametr, przekazanie w wywołaniu pięciu oddzielonych przecinkiem wartości nie spowoduje błędu. Co więcej, tę własność można w użyteczny sposób wykorzystać. Fabryczna funkcja func_get_args() zwraca tablicę z wartościami wszystkich argumentów, które przekazano do funkcji. Dostępna jest także funkcja func_num_args() zwracająca liczbę przekazanych argumentów.
Pierwsza z przedstawionych funkcji oblicza średnią wartość z przekazanego zbioru liczb. Została zabezpieczona przed możliwością wywołania jej bez podania parametrów, co doprowadziłoby do próby dzielenia przez zero. Osiągnięto to, zamieszczając jeden parametr ($a) w deklaracji funkcji, stał się on obowiązkowy w wywołaniu. Do policzenia sumy wartości elementów zwróconej przez func_get_args() tablicy posłużyła fabryczna funkcja array_sum().
<?php
function avg($a) {
return array_sum(func_get_args()) / func_num_args();
}
// przykładowe wywołania
echo avg(9); // 9
echo avg(0); // 0
echo avg(1,2,3); // 2
?>
Udział wzięli
Druga z prezentowanych funkcji ustala największą liczbę spośród przekazanych argumentów. Wykorzystano w niej podobne mechanizmy jak wyżej, argumenty zostają przekształcone do postaci tablicy i trafiają do fabrycznej funkcji max przewidzianej dla tego typu danych. Aby zapewnić poprawne stosowanie funkcji my_max wymuszono konieczność przekazania przynajmniej jednego argumentu.
<?php
function my_max($a) {
return max(func_get_args());
}
// przykladowe wywolania
echo my_max(9); // 9
echo my_max(9,1,3,4,55); // 55
echo my_max(9,1,3,4,5,6); // 9
?>