c'è la funzione is_numeric() che controlla se una variabile è un numero o no e ritorna un valore booleano vero se lo è, falso se non lo è.

Una volta appurato che è un numero, se deve essere necessariamente un intero, puoi fare un cast a float, ricavarti la parte decimale e controllare che sia pari a zero.