Wszystko ładnie, pięknie, ale przez GET lecą także stringi a nie tylko int. Rozumiem, że w tym temacie akurat o INT chodzi, bo tak autor zadeklarował. Ja sądzę, że najpierw powinno być sprawdzenie czy zmienna jest w ogóle ustawiona (isset), potem sprawdzenie czy zmienna jest liczbą (is_numeric), a na sam koniec czy jest większa od 0. A dlaczego tak i w tej kolejności? To proste. w warunku IF php sprawdza zależności po kolei i w przypadku gdy wszędzie są AND przerwie sprawdzanie na pierwszym FALSE nie kończąc i idąc dalej. Wynika to z algebry Boole'a, gdyż tylko TRUE na wszystkich pozycjach daje TRUE. Wystarczy choć jeden FALSE i automatycznie całe wyrażenie jest FALSE. Dlatego powinno się te najbardziej istotne ustawiać na samym początku by warunki były jak najbardziej optymalne.
Może się w takim przypadku zdarzyć, że jeśli A nie będzie liczbą, to IF zwróci FALSE już przy drugim fragmencie i reszty nawet nie sprawdzi, wychodząc z warunku. To jest optymalizacja w IFie dla szybszego działania.
Inna sprawa to kolejność w jakiej sprawdzam. Dlaczego taką przyjąłem? To proste. Zmienna musi być i to chyba jasne dlaczego isset jest pierwsze. A dlaczego is_numeric jest drugie? Bo jeśli ktoś do zmiennej A wpisze c, t lub jakąkolwiek literę to $_GET['A'] zwróci TRUE. Wynika to z tego, że PHP niejawnie skonwertuje znak do odpowiadającego mu kodu ASCII i zwróci znak jako liczbę typu INT zawsze dodatnią, bo nie ma ujemnych znaków ASCII. A przecież to jest jawny błąd. Stąd sprawdzanie czy zmienna jest liczbą musi być wykonane wcześniej niż sprawdzenie większości od 0.