Funkcja zapisana w języku PHP ma postać:
function fun2($liczba) { if($liczba % 2 != 0) return 1; return 0; }Jej zadaniem jest
A. wypisanie liczby parzystej.
B. zwrócenie wartości 0, gdy liczba jest nieparzysta.
C. wypisanie liczby nieparzystej.
D. zwrócenie wartości 1, gdy liczba jest nieparzysta.
Funkcja sprawdza parzystość liczby za pomocą operatora modulo, czyli %. Wyrażenie liczba % 2 oznacza resztę z dzielenia tej liczby przez 2. Jeżeli reszta nie jest równa 0, to liczba nie dzieli się równo przez 2, a więc jest nieparzysta. Wtedy instrukcja return 1 natychmiast kończy działanie funkcji i zwraca wartość 1 do miejsca, z którego funkcja została wywołana. Jeśli warunek nie zostanie spełniony, program przechodzi dalej i wykonuje return 0, czyli zwraca 0 dla liczby parzystej. Ważne jest tu słowo zwraca, bo funkcja niczego nie wypisuje na ekranie. Nie ma tu echo ani print. W praktyce taka funkcja może być użyta np. w instrukcji if do filtrowania liczb nieparzystych, walidacji danych albo sterowania logiką programu. Moim zdaniem warto też zauważyć, że w nowoczesnym PHP lepszą praktyką byłoby zwracanie true lub false oraz nadanie funkcji bardziej opisowej nazwy, np. czyNieparzysta. Można też dodać typy, np. parametr jako int i wynik jako bool, bo wtedy kod jest czytelniejszy i łatwiej go utrzymać.
W tym kodzie łatwo pomylić dwie rzeczy: zwracanie wartości przez funkcję oraz wypisywanie czegoś na ekranie. Instrukcja return nie pokazuje wyniku użytkownikowi w przeglądarce ani w konsoli. Ona tylko przekazuje wartość z funkcji do dalszego użycia w programie. Gdyby zadaniem funkcji było wypisanie liczby nieparzystej albo parzystej, w kodzie najpewniej pojawiłoby się echo, print albo inny mechanizm generowania wyjścia. Tutaj tego nie ma, więc mówienie o wypisywaniu jest nietrafione. Funkcja działa bardziej jak test logiczny: bierze liczbę, sprawdza resztę z dzielenia przez 2 i oddaje 1 albo 0. Warunek liczba % 2 != 0 jest spełniony właśnie dla liczb nieparzystych, bo taka liczba po podzieleniu przez 2 zostawia resztę. Dla przykładu 7 % 2 daje 1, więc funkcja zwróci 1. Natomiast 8 % 2 daje 0, więc warunek jest fałszywy i zostanie zwrócone 0. Typowy błąd myślowy polega na tym, że ktoś widzi return 0 po instrukcji if i zakłada, że 0 dotyczy liczby nieparzystej. A tak nie jest, bo ten fragment wykona się dopiero wtedy, gdy warunek nieparzystości nie przejdzie. Z mojego doświadczenia to jest bardzo częsta pułapka przy czytaniu krótkich funkcji w PHP: trzeba patrzeć nie tylko na wartości return, ale też na warunki, które do nich prowadzą.